2010-12-01 13 views
1

Googleマップでいくつかのタスクを実行する必要があります 1.最初にマーカーを1つしか配置できないようにするには 2.街などの詳細情報を取得します住所Googleマップから場所の詳細を取得する

誰でもこれについて知っていますか?

答えて

5

私はあなたが探しているものを達成できるかを示すために、最小限の例を書いた:あなたの最初のポイントに

public void onModuleLoad() { 
    RootPanel.get().add(new GoogleMaps()); 
} 

private class GoogleMaps extends Composite { 

    private MapWidget fMap; 
    private Geocoder fCoder; 
    private Marker fMarker; 

    public GoogleMaps() { 
     fMap = new MapWidget(LatLng.newInstance(47.0559084, 8.3114878), 6); 
     fMap.setSize("300px", "300px"); 
     fCoder = new Geocoder(); 
     MarkerOptions options = MarkerOptions.newInstance(); 
     options.setDraggable(true); 
     fMarker = new Marker(LatLng.newInstance(47.0559084, 8.3114878), options); 
     fMap.addOverlay(fMarker); 
     fMarker.setVisible(false); 
     addHandlers(); 
     initWidget(fMap); 
    } 

    private void addHandlers() { 
     fMap.addMapDoubleClickHandler(new MapDoubleClickHandler() { 

      @Override 
      public void onDoubleClick(MapDoubleClickEvent event) { 
       if (event.getLatLng() != null) { 
        performReverseLookup(event.getLatLng()); 
       } 
      } 

     }); 

     fMarker.addMarkerDragEndHandler(new MarkerDragEndHandler() { 

      @Override 
      public void onDragEnd(MarkerDragEndEvent event) { 
       LatLng point = event.getSender().getLatLng(); 
       if (point != null) { 
        performReverseLookup(point); 
       } 
      } 

     }); 
    } 

    private void performReverseLookup(final LatLng point) { 
     fCoder.getLocations(point, new LocationCallback() { 

      @Override 
      public void onSuccess(JsArray<Placemark> locations) { 
       if (locations.length() > 0) { 
        LatLng point = locations.get(0).getPoint(); 
        fMarker.setLatLng(point); 
        fMarker.setVisible(true); 
        fMap.getInfoWindow().open(point, new InfoWindowContent(locations.get(0).getAddress())); 
       } 
      } 

      @Override 
      public void onFailure(int statusCode) {} 
     }); 
    } 
} 

Markerのインスタンスを1つだけ作成し、ユーザーとの対話時にそのLatLngを更新(で行われperformReverseLookup())。

2番目の質問:逆引き参照を実行した後、locationsアレイからPlacemarkオブジェクトを取得し、アドレスのような詳細を取得できます。

+0

あなたの時間を費やしてすべてを書いていただきありがとうございます。私はそれをテストし、あなたに知らせます。 – Noor

+0

こんにちは、素晴らしい作品。ありがとう非常にこれは、時間のロスを保存するつもりです。ところで、私はモーリシャスのNoorで、コンピュータサイエンスと工学を学んでいます。 – Noor

+0

うれしい私は助けることができます。 – z00bs

関連する問題