지오코딩 및 역방향 지오코딩 수행
Important
엔터프라이즈용 Bing Maps 서비스 사용 중지
Windows.Services.Maps 네임스페이스의 UWP MapControl 및 지도 서비스는 Bing Maps를 사용합니다. 엔터프라이즈용 Bing Maps가 더 이상 사용되지 않아 사용 중지되며, 이 시점에서 MapControl 및 서비스는 데이터를 더 이상 수신하지 않습니다.
Bing Maps 설명서 및 Bing Maps 개발자 센터를 참조하여 자세한 내용을 확인하세요.
참고 항목
MapControl 및 지도 서비스를 사용하려면 MapServiceToken이라는 지도 인증 키가 필요합니다. 맵 인증 키 가져오기 및 설정에 대한 자세한 내용은 맵 인증 키 요청을 참조하세요.
이 가이드에서는 Windows.Services.Maps 네임스페이스에 있는 MapLocationFinder 클래스의 메서드를 호출하여 주소를 지리적 위치로 변환하고(지오코딩) 지리적 위치를 주소로 변환(리버스 지오코딩)하는 방법을 보여 줍니다.
지오코딩 및 리버스 지오코딩과 관련된 클래스는 다음과 같이 구성됩니다.
- MapLocationFinder 클래스에는 지오코딩(FindLocationsAsync)과 리버스 지오코딩(FindLocationsAtAsync)을 수행하는 메서드가 있습니다.
- 이러한 메서드는 둘 다 MapLocationFinderResult 인스턴스를 반환합니다.
- MapLocationFinderResult의 Locations 속성은 MapLocation 개체 컬렉션을 노출합니다.
- MapLocation 개체에는 주소를 나타내는 MapAddress를 노출하는 Address 속성과 지리적 위치를 나타내는 Geopoint 개체를 노출하는 Point 속성이 둘 다 있습니다.
Important
지도 서비스를 사용하려면 먼저 지도 인증 키를 지정해야 합니다. 자세한 내용은 지도 인증 키 요청을 참조하세요.
위치(지오코드) 가져오기
이 섹션에서는 주소 또는 장소 이름을 지리적 위치로 변환(지오코딩)하는 방법을 보여 줍니다.
- 장소 이름 또는 주소를 사용하여 MapLocationFinder 클래스의 FindLocationsAsync 메서드 오버로드 중 하나를 호출합니다.
- FindLocationsAsync 메서드는 MapLocationFinderResult 개체를 반환합니다.
- MapLocationFinderResult의 Locations 속성을 사용하여 MapLocation 개체 컬렉션을 노출합니다. 시스템에서 지정된 입력에 해당하는 여러 위치를 찾을 수 있으므로 MapLocation 개체가 여러 개 있을 수 있습니다.
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void geocodeButton_Click(object sender, RoutedEventArgs e)
{
// The address or business to geocode.
string addressToGeocode = "Microsoft";
// The nearby location to use as a query hint.
BasicGeoposition queryHint = new BasicGeoposition();
queryHint.Latitude = 47.643;
queryHint.Longitude = -122.131;
Geopoint hintPoint = new Geopoint(queryHint);
// Geocode the specified address, using the specified reference point
// as a query hint. Return no more than 3 results.
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAsync(
addressToGeocode,
hintPoint,
3);
// If the query returns results, display the coordinates
// of the first result.
if (result.Status == MapLocationFinderStatus.Success)
{
tbOutputText.Text = "result = (" +
result.Locations[0].Point.Position.Latitude.ToString() + "," +
result.Locations[0].Point.Position.Longitude.ToString() + ")";
}
}
이 코드는 다음 결과를 tbOutputText
텍스트 상자에 표시합니다.
result = (47.6406099647284,-122.129339994863)
주소(역방향 지오코드) 가져오기
이 섹션에서는 지리적 위치를 주소로 변환(리버스 지오코딩)하는 방법을 보여 줍니다.
- MapLocationFinder 클래스의 FindLocationsAtAsync 메서드를 호출하세요.
- FindLocationsAtAsync 메서드는 일치하는 MapLocation 개체의 컬렉션을 포함하는 MapLocationFinderResult 개체를 반환합니다.
- MapLocationFinderResult의 Locations 속성을 사용하여 MapLocation 개체 컬렉션을 노출합니다. 시스템에서 지정된 입력에 해당하는 여러 위치를 찾을 수 있으므로 MapLocation 개체가 여러 개 있을 수 있습니다.
- 각 MapLocation의 Address 속성을 통해 MapAddress 개체에 액세스합니다.
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void reverseGeocodeButton_Click(object sender, RoutedEventArgs e)
{
// The location to reverse geocode.
BasicGeoposition location = new BasicGeoposition();
location.Latitude = 47.643;
location.Longitude = -122.131;
Geopoint pointToReverseGeocode = new Geopoint(location);
// Reverse geocode the specified geographic location.
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
// If the query returns results, display the name of the town
// contained in the address of the first result.
if (result.Status == MapLocationFinderStatus.Success)
{
tbOutputText.Text = "town = " +
result.Locations[0].Address.Town;
}
}
이 코드는 다음 결과를 tbOutputText
텍스트 상자에 표시합니다.
town = Redmond