1

我正在使用本教程来构建基于位置的应用程序:

http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/

我仍然有一个按钮,使用该按钮我可以查看地图上所有最近的地方

这里我需要一点小改动,我也想在地图上显示一个地方,不是全部,只选择一个....

因此,在 SinglePlace.xml 中,我给出了一个图像按钮来查看该特定位置的位置....

我仍然使用下面的java类来获取所有内容,请告诉我我需要在我的代码中做哪些更改才能只获得一个地方[我选择了哪个地方]

      public class PlacesMapActivity extends MapActivity {
// Nearest places
PlacesList nearPlaces;

// Map view
MapView mapView;

// Map overlay items
List<Overlay> mapOverlays;

AddItemizedOverlay itemizedOverlay;

GeoPoint geoPoint;
// Map controllers
MapController mc;

double latitude;
double longitude;
OverlayItem overlayitem;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_places);

    // Getting intent data
    Intent i = getIntent();

    // Users current geo location
    String user_latitude = i.getStringExtra("user_latitude");
    String user_longitude = i.getStringExtra("user_longitude");

    // Nearplaces list
    nearPlaces = (PlacesList) i.getSerializableExtra("near_places");

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setBuiltInZoomControls(true);

    mapOverlays = mapView.getOverlays();

    // Geopoint to place on map
    geoPoint = new GeoPoint((int) (Double.parseDouble(user_latitude) * 1E6),
            (int) (Double.parseDouble(user_longitude) * 1E6));

    // Drawable marker icon
    Drawable drawable_user = this.getResources()
            .getDrawable(R.drawable.mark_red);

    itemizedOverlay = new AddItemizedOverlay(drawable_user, this);

    // Map overlay item
    overlayitem = new OverlayItem(geoPoint, "Your Location",
            "That is you!");

    itemizedOverlay.addOverlay(overlayitem);

    mapOverlays.add(itemizedOverlay);
    itemizedOverlay.populateNow();

    // Drawable marker icon
    Drawable drawable = this.getResources()
            .getDrawable(R.drawable.mark_blue);

    itemizedOverlay = new AddItemizedOverlay(drawable, this);

    mc = mapView.getController();

    // These values are used to get map boundary area
    // The area where you can see all the markers on screen
    int minLat = Integer.MAX_VALUE;
    int minLong = Integer.MAX_VALUE;
    int maxLat = Integer.MIN_VALUE;
    int maxLong = Integer.MIN_VALUE;

    // check for null in case it is null
    if (nearPlaces.results != null) {
        // loop through all the places
        for (Place place : nearPlaces.results) {
            latitude = place.geometry.location.lat; // latitude
            longitude = place.geometry.location.lng; // longitude

            // Geopoint to place on map
            geoPoint = new GeoPoint((int) (latitude * 1E6),
                    (int) (longitude * 1E6));

            // Map overlay item
            overlayitem = new OverlayItem(geoPoint, place.name,
                    place.vicinity);

            itemizedOverlay.addOverlay(overlayitem);


            // calculating map boundary area
            minLat  = (int) Math.min( geoPoint.getLatitudeE6(), minLat );
            minLong = (int) Math.min( geoPoint.getLongitudeE6(), minLong);
            maxLat  = (int) Math.max( geoPoint.getLatitudeE6(), maxLat );
            maxLong = (int) Math.max( geoPoint.getLongitudeE6(), maxLong );
        }
        mapOverlays.add(itemizedOverlay);

        // showing all overlay items
        itemizedOverlay.populateNow();
    }

    // Adjusting the zoom level so that you can see all the markers on map
    mapView.getController().zoomToSpan(Math.abs( minLat - maxLat ), Math.abs( minLong - maxLong ));

    // Showing the center of the map
    mc.animateTo(new GeoPoint((maxLat + minLat)/2, (maxLong + minLong)/2 ));
    mapView.postInvalidate();

}

@Override
protected boolean isRouteDisplayed() {
    return false;
}

   }
4

0 回答 0