2

我有这段代码假设将标记放置在 latlng

public void initialize() {  
    geocoder = Geocoder.create();
    myOptions = MapOptions.create();        
    myOptions.setZoom(18);
    myOptions.setMapTypeId(MapTypeId.HYBRID);
    myOptions.setMapMaker(true);
    map = GoogleMap.create(
        Document.get().getElementById("map_canvas"),myOptions);      

    GeocoderRequest request = GeocoderRequest.create();                 
    request.setLocation(LatLng.create(lat,lng));

    geocoder.geocode(request, new Callback() {
        public void handle(JsArray<GeocoderResult> rslts, GeocoderStatus status)
        {
            if (status == GeocoderStatus.OK) {
                location = rslts.get(0);
                map.setCenter(location.getGeometry().getLocation());
                marker = Marker.create();
                marker.setMap(map);
                marker.setPosition(location.getGeometry().getLocation());
            } 
        }
    });

当我使用这些坐标 ( 45.48592686713835, -73.49009937672122) 进行测试时,我只得到最近的地址,即图标 A。但我真正想要的是用绿色箭头显示的确切位置。

在此处输入图像描述

我错过了什么吗?

4

1 回答 1

1

Geocoder在使用进行反向地理编码(将 LatLng 转换为地址)时,您将始终获得最近的地址(如果可以确定的话)。如果要使用原始坐标,只需Marker使用原始坐标放置即可。如果您要将 LatLng 转换为地址或 GoogleGeocoder可以获取的最接近地址的地址,结果将始终为您提供最近已知的 LatLng street_addressrouteairporttransit_stationneighborhoodsublocalitylocality等。

于 2012-07-01T16:54:32.867 回答