0

Google プレイスからいくつかのプレイス リストを取得して、それを googlemap api v2 に表示しようとしていました。また、情報ウィンドウを表示したいのですが、ここでは、情報ウィンドウ引数を介してのみ場所参照にアクセスできます。問題は、情報ウィンドウにも参照が表示されることです。それは厄介なことです。情報ウィンドウ内に表示したくありませんが、メソッドに渡すためにこの情報ウィンドウのクリックリスナー内の参照が必要です。助けていただければ幸いです...

コード

 for(Place place : nearPlaces.results){

                    // Creating a marker
                        MarkerOptions markerOptions = new MarkerOptions();

                        // Getting latitude of the place
                        double latitude = place.geometry.location.lat;       
                        double longitude = place.geometry.location.lng;

                        // Getting name
                        String NAME = place.name; 
                        // Getting vicinity
                        String VICINITY = place.vicinity;
                        //Reference of a place
                        String REFERENCE = place.reference;
                       LatLng latLng = new LatLng(latitude, longitude);
                        // Setting the position for the marker
                        markerOptions.position(latLng);
                        // Setting the title for the marker. 
                        markerOptions.title(NAME + " : " + VICINITY);                   
                        markerOptions.snippet(REFERENCE);
                        markerOptions.icon(bitmapDescriptor);

                        // Placing a marker on the touched position
                     final Marker marker = mGoogleMap.addMarker(markerOptions); 
                        mGoogleMap.setOnInfoWindowClickListener(
                                  new OnInfoWindowClickListener(){
                                    @Override
                                    public void onInfoWindowClick(Marker arg0) {
                                        // TODO Auto-generated method stub
                                        arg0.hideInfoWindow();
                                        double dlat=arg0.getPosition().latitude;
                                        double dlon=arg0.getPosition().longitude;
                                    alert.showpickAlertDialog2(PlacesMapActivity.this,dlat , dlon, arg0.getSnippet());  
                                    }
                                  }
                                );
4

1 に答える 1

1

Map<Marker, Place>スニペットに REFERENCE を入れないでください。

情報ウィンドウがクリックされたら、マップ内のマーカーを調べて、対応する場所を取得します

HashMap<Marker, Place> markerPlaces = new HashMap<Marker, Place>();
for(Place place : nearPlaces.results){

                // Creating a marker
                    MarkerOptions markerOptions = new MarkerOptions();

                    // Getting latitude of the place
                    double latitude = place.geometry.location.lat;       
                    double longitude = place.geometry.location.lng;

                    // Getting name
                    String NAME = place.name; 
                    // Getting vicinity
                    String VICINITY = place.vicinity;
                    //Reference of a place
                    String REFERENCE = place.reference;
                   LatLng latLng = new LatLng(latitude, longitude);
                    // Setting the position for the marker
                    markerOptions.position(latLng);
                    // Setting the title for the marker. 
                    markerOptions.title(NAME + " : " + VICINITY);                   
                    markerOptions.icon(bitmapDescriptor);

                    // Placing a marker on the touched position
                 final Marker marker = mGoogleMap.addMarker(markerOptions); 
                    markerPlaces.put(marker, place);
                    mGoogleMap.setOnInfoWindowClickListener(
                              new OnInfoWindowClickListener(){
                                @Override
                                public void onInfoWindowClick(Marker arg0) {
                                    // TODO Auto-generated method stub
                                    arg0.hideInfoWindow();
                                    double dlat=arg0.getPosition().latitude;
                                    double dlon=arg0.getPosition().longitude;
                                    Place p = markerPlaces.get(marker);
                                alert.showpickAlertDialog2(PlacesMapActivity.this,dlat , dlon, p.reference);  
                                }
                              }
                            );

または、この例では、onInfoWindowClick に配置して使用するための最終的な参照を作成できます。

for(Place place : nearPlaces.results){

                // Creating a marker
                    MarkerOptions markerOptions = new MarkerOptions();

                    // Getting latitude of the place
                    double latitude = place.geometry.location.lat;       
                    double longitude = place.geometry.location.lng;

                    // Getting name
                    String NAME = place.name; 
                    // Getting vicinity
                    String VICINITY = place.vicinity;
                    //Reference of a place
                    String REFERENCE = place.reference;
                   LatLng latLng = new LatLng(latitude, longitude);
                    // Setting the position for the marker
                    markerOptions.position(latLng);
                    // Setting the title for the marker. 
                    markerOptions.title(NAME + " : " + VICINITY);                   
                    markerOptions.icon(bitmapDescriptor);

                    // Placing a marker on the touched position
                 final Marker marker = mGoogleMap.addMarker(markerOptions);
                 final Place p = place;
                    markerPlaces.put(marker, place);
                    mGoogleMap.setOnInfoWindowClickListener(
                              new OnInfoWindowClickListener(){
                                @Override
                                public void onInfoWindowClick(Marker arg0) {
                                    // TODO Auto-generated method stub
                                    arg0.hideInfoWindow();
                                    double dlat=arg0.getPosition().latitude;
                                    double dlon=arg0.getPosition().longitude;
                                alert.showpickAlertDialog2(PlacesMapActivity.this,dlat , dlon, p.reference);  
                                }
                              }
                            );
于 2013-06-28T07:18:53.620 に答える