我目前修改了“Google地图视图”代码(如下所示),但是当地图加载并且您点击地图上的项目时,它会返回错误. 我相信这与mContext的null值有关,但我不确定,如果有人可以帮我解决这个问题,我
我相信这与mContext的null值有关,但我不确定,如果有人可以帮我解决这个问题,我真的很感激:
protected boolean onTap(int index) { OverlayItem item = mOverlays.get(index); Context mContext = null; AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
我的地图类:
package testing.map; import java.util.List; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; public class Mapview extends MapActivity { /** Called when the activity is first created. */ protected boolean isRouteDisplayed(){ return false; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mapview); MapView mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); List<Overlay> mapOverlays = mapView.getOverlays(); Drawable drawable = this.getResources().getDrawable(R.drawable.jd_sports_logo); HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable); //Declared longitude/latitude as doubles as GeoPoint only uses 'int' - converted to microdegrees double latitude = 51.545538; double longitude = -0.477247; GeoPoint point = new GeoPoint((int)(latitude * 1e6), (int)(longitude * 1e6)); OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!"); itemizedoverlay.addOverlay(overlayitem); mapOverlays.add(itemizedoverlay); } }
我的HelloItemizedOverlay类:
package testing.map; import java.util.ArrayList; import android.graphics.drawable.Drawable; import android.app.AlertDialog; import android.content.Context; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem; public class HelloItemizedOverlay extends ItemizedOverlay { private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); public HelloItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } public void addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } public HelloItemizedOverlay(Drawable defaultMarker, Context context) { super(defaultMarker); Context mContext = context; } @Override protected OverlayItem createItem(int i) { // TODO Auto-generated method stub return mOverlays.get(i); } @Override public int size() { // TODO Auto-generated method stub return mOverlays.size(); } @Override protected boolean onTap(int index) { OverlayItem item = mOverlays.get(index); Context mContext = null; AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } }您缺少主类中的Context.
添加这个:
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mContext); where mContext = this;
而不是这个:
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable);