Android 應用使用 Google 地圖的例子

openkk 12年前發布 | 6K 次閱讀 1.8版本發布 OpenJDK

[代碼] GMapsActivity.java

package com.javacodegeeks.android.googlemaps;

import java.util.List;

import android.graphics.drawable.Drawable; import android.os.Bundle;

import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem;

public class GMapsActivity extends MapActivity {

private MapView mapView;

private static final int latitudeE6 = 37985339;
private static final int longitudeE6 = 23716735;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

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

    List<overlay> mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.icon);
    CustomItemizedOverlay itemizedOverlay = 
         new CustomItemizedOverlay(drawable, this);

    GeoPoint point = new GeoPoint(latitudeE6, longitudeE6);
    OverlayItem overlayitem = 
         new OverlayItem(point, "Hello", "I'm in Athens, Greece!");

    itemizedOverlay.addOverlay(overlayitem);
    mapOverlays.add(itemizedOverlay);

    MapController mapController = mapView.getController();

    mapController.animateTo(point);
    mapController.setZoom(6);

}

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

}</pre>


[代碼] CustomItemizedOverlay.java

package com.javacodegeeks.android.googlemaps;

import java.util.ArrayList;

import android.app.AlertDialog; import android.content.Context; import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem;

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> {

private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();

private Context context;

public CustomItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); }

public CustomItemizedOverlay(Drawable defaultMarker, Context context) { this(defaultMarker); this.context = context; }

@Override protected OverlayItem createItem(int i) { return mapOverlays.get(i); }

@Override public int size() { return mapOverlays.size(); }

@Override protected boolean onTap(int index) { OverlayItem item = mapOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; }

public void addOverlay(OverlayItem overlay) { mapOverlays.add(overlay); this.populate(); }

}</pre> </div>