我已经尝试了每个可以谷歌的例子,我可以在stackoverflow和其他网站上找到的每个解决方案..但是我只是无法开始工作..
现在我使用来自androids自己网站的示例,我在其中创建一个单独的类。这是我的代码:
super.onCreate(savedInstanceState);
setContentView(R.layout.win_showmap) ;
MapView map = (MapView) findViewById(R.id.googlemap) ;
map.setBuiltInZoomControls(true);
mapController = map.getController() ;
mapController.setZoom(12);
int lat = (int)(Double.parseDouble(GlobalClass.pass_lattitude) * 1000000) ;
int lon = (int)( Double.parseDouble(GlobalClass.pass_longitude) * 1000000);
GeoPoint point = new GeoPoint(lat,lon) ;
p = point ;
mapController.animateTo(point) ;
//---Add a location marker---
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin);
Mapoverlays itemizedoverlay = new Mapoverlays(drawable);
OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
通过使用Log.d,我可以找到给出零点错误的崩溃点,即: 列表mapOverlays = mapView.getOverlays();
我的API密钥工作正常,因为如果删除6行mapoverlay代码,我可以查看地图。 不知道它是否意味着什么,但是当没有覆盖码时,我会得到这些Logcats。
02-03 22:44:05.892:I / MapActivity(2374):处理网络变更通知:已连接 02-03 22:44:05.892:E / MapActivity(2374):无法获得连接工厂客户端
如果我包含覆盖代码,它崩溃了,我得到了Logcat: 02-03 22:45:33.183:E / AndroidRuntime(2465):致命异常:主要 02-03 22:45:33.183:E / AndroidRuntime(2465):java.lang.RuntimeException:无法启动活动ComponentInfo {com.closebuy.namespace / com.closebuy.namespace.Show_map}:java.lang.NullPointerException 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.os.Handler.dispatchMessage(Handler.java:99) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.os.Looper.loop(Looper.java:123) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.ActivityThread.main(ActivityThread.java:4627) 02-03 22:45:33.183:E / AndroidRuntime(2465):at java.lang.reflect.Method.invokeNative(Native Method) 02-03 22:45:33.183:E / AndroidRuntime(2465):at java.lang.reflect.Method.invoke(Method.java:521) 02-03 22:45:33.183:E / AndroidRuntime(2465):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 02-03 22:45:33.183:E / AndroidRuntime(2465):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-03 22:45:33.183:E / AndroidRuntime(2465):at dalvik.system.NativeStart.main(Native Method) 02-03 22:45:33.183:E / AndroidRuntime(2465):引起:java.lang.NullPointerException 02-03 22:45:33.183:E / AndroidRuntime(2465):at com.closebuy.namespace.Show_map.onCreate(Show_map.java:48) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 02-03 22:45:33.183:E / AndroidRuntime(2465):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
我已经在模拟器和我的Galaxy S2上尝试过了..请帮助,我真的不想这个工作
答案 0 :(得分:0)
通过使用Log.d我可以找到给出零点错误的崩溃点,即行:List mapOverlays = mapView.getOverlays();
您在哪里声明并初始化变量mapView
?我看到的唯一MapView
类型变量是map
。
MapView map = (MapView) findViewById(R.id.googlemap) ;
所以,我会尝试:
List<Overlay> mapOverlays = map.getOverlays();
如果仍然因空指针错误而崩溃,那么您在win_showmap.xml
布局中没有声明MapView视图。
答案 1 :(得分:0)
我知道此示例的文档中存在错误。从内存中我认为构造函数是完全错误的。我认为它需要
public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
// super(defaultMarker); <<<< REPLACE THIS WITH THE LINE BELOW
super(boundCenterBottom(defaultMarker));
mContext = context;
}