Java 无法在Android中使用Mapoverlays。。继续获取空异常
我已经尝试了谷歌上的每一个例子,以及在stackoverflow和其他网站上找到的每一个解决方案。。但是这个我就是不能去上班 现在我使用androids自己的网站上的例子,在那里我创建了一个单独的类。这是我的代码:Java 无法在Android中使用Mapoverlays。。继续获取空异常,java,android,google-maps,Java,Android,Google Maps,我已经尝试了谷歌上的每一个例子,以及在stackoverflow和其他网站上找到的每一个解决方案。。但是这个我就是不能去上班 现在我使用androids自己的网站上的例子,在那里我创建了一个单独的类。这是我的代码: super.onCreate(savedInstanceState); setContentView(R.layout.win_showmap) ; MapView map = (MapView) findViewById(R.id.googlema
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);
super.onCreate(savedInstanceState);
setContentView(R.layout.win_showmap);
MapView地图=(MapView)findViewById(R.id.googlemap);
map.setBuiltInZoomControls(真);
mapController=map.getController();
mapController.setZoom(12);
int lat=(int)(Double.parseDouble(GlobalClass.pass\u latitude)*1000000);
int lon=(int)(Double.parseDouble(GlobalClass.pass_经度)*1000000);
地质点=新的地质点(纬度、经度);
p=点;
mapController.animateTo(点);
//---添加位置标记---
List mapOverlays=mapView.getOverlays();
Drawable Drawable=this.getResources().getDrawable(R.Drawable.pushpin);
Mapoverlays ItemizeOverlay=新的Mapoverlays(可绘制);
OverlayItem OverlayItem=新的OverlayItem(指向“你好,芒多!”,“我在墨西哥城!”);
itemizedoverlay.addOverlay(overlayitem);
添加(itemizedoverlay);
通过使用Log.d,我可以找到产生空点错误的崩溃点,即行:
List mapOverlays=mapView.getOverlays()
我的API键工作得很好,因为如果我删除6行mapoverlay代码,我就可以使用该地图。
不知道这是否意味着什么,但我得到这些日志时,没有覆盖代码
02-03 22:44:05.892:I/MapActivity(2374):处理网络更改通知:已连接
02-03 22:44:05.892:E/MapActivity(2374):无法获取连接工厂客户端
如果我包含覆盖代码,它会崩溃,我会得到日志:
02-03 22:45:33.183:E/AndroidRuntime(2465):致命异常:主
02-03 22:45:33.183:E/AndroidRuntime(2465):java.lang.RuntimeException:无法启动活动组件信息{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):位于java.lang.reflect.Method.Invokenactive(本机方法)
02-03 22:45:33.183:E/AndroidRuntime(2465):位于java.lang.reflect.Method.invoke(Method.java:521)
02-03 22:45:33.183:E/AndroidRuntime(2465):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-03 22:45:33.183:E/AndroidRuntime(2465):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-03 22:45:33.183:E/AndroidRuntime(2465):在dalvik.system.NativeStart.main(本机方法)
02-03 22:45:33.183:E/AndroidRuntime(2465):由以下原因引起:java.lang.NullPointerException
02-03 22:45:33.183:E/AndroidRuntime(2465):位于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)
我已经在emulator和Galaxy S2上试用过。。请帮帮我,我真的不想这样做
通过使用Log.d,我可以找到导致空点错误的崩溃点,即:List maposoverlays=mapView.getOverlays()
您在哪里声明和初始化变量mapView
?我看到的唯一初始化的MapView
类型变量是map
MapView map = (MapView) findViewById(R.id.googlemap) ;
因此,我会尝试:
List<Overlay> mapOverlays = map.getOverlays();
List mapOverlays=map.getOverlays();
如果仍然出现空指针错误,则在
win\u showmap.xml
布局中没有声明MapView视图。我知道此示例的文档中存在错误。根据记忆,我认为构造函数是完全错误的。我想应该是这样
public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
// super(defaultMarker); <<<< REPLACE THIS WITH THE LINE BELOW
super(boundCenterBottom(defaultMarker));
mContext = context;
}
public HelloItemizedOverlay(可绘制的默认标记,上下文){
//super(defaultMarker);对不起,我忘记了“top”:公共类Show\u map扩展了MapActivity{private MapController MapController;MapView MapView;MapController mc;GeoPoint p;SoMapView
已声明但未初始化。您是否尝试使用我编写的初始化变量?该死,我现在觉得很傻!我花了4个小时试图找出错误,然后是因为我使用了我猜到的变量g是我尝试的第一个例子之一。这解决了所有问题。非常感谢!非常好,祝你在应用程序的其余部分好运。是的,我在这里通过另一个线程找到了这一个。结果发现这是我犯的完全不同的错误