2012-07-01 3 views
2

у меня есть этот код, который предполагают, чтобы поместить маркер на широты и долготыПоместите маркер по широте и долготе

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) я получаю только ближайший адрес, который значок А. Но я действительно хотел, чтобы точное местоположение было показано с помощью зеленой стрелки.

enter image description here

ли я что-то отсутствует?

ответ

1

Вы всегда получите ближайший адрес, если можно определить, используя Geocoder, чтобы сделать обратный геокод (преобразовать LatLng в адрес). Если вы хотите использовать исходные координаты, просто поместите Marker, используя исходные координаты. Если вы собираетесь преобразовать LatLng в адрес или ближайший, что Google Geocoder может получить по адресу, результаты всегда будут давать вам LatLng в ближайшем известном street_address, route, airport, transit_station, neighborhood, sublocality, locality, и т.д.

+0

Я сделал то, что вы предложили, но теперь у меня есть это странное исключение http://stackoverflow.com/questions/11284367/weird-exception-when-placing-a-marker-with-latlng – outellou