“IBitmapDescriptorFactory未初始化”错误

我试图在谷歌地图Android API v2中获得一个带有自定义图标的标记。我刚刚改变了谷歌提供的一个例子。我将图标(BitmapDescriptorFactory.fromResource(R.drawable.arrow))添加到方法setUpMap()中的RawMapViewDemoActivity中。

私有void setupMapifneed(){
如果(mMap==null){
mMap=((MapView)findViewById(R.id.map)).getMap();
如果(mMap!=null){
setUpMap();
}
}
}
私有void setUpMap(){
mMap.addMarker(新标记选项()
.位置(新车床(0,0))
.标题(“标记”)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow));
}

但我总是得到一个“答案”;IBitmapDescriptorFactory未初始化

12-18 15:40:54.356:E/AndroidRuntime(12591):java.lang.RuntimeException:无法启动活动组件信息{com.example.mapdemo/com.example.mapdemo.RawMapViewDemoActivity}:java.lang.NullPointerException:未初始化IBitmapDescriptorFactory
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.ActivityThread.access$600(ActivityThread.java:130)
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.os.Handler.dispatchMessage(Handler.java:99)上
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.os.Looper.loop(Looper.java:137)
12-18 15:40:54.356:E/AndroidRuntime(12591):位于android.app.ActivityThread.main(ActivityThread.java:4745)
12-18 15:40:54.356:E/AndroidRuntime(12591):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-18 15:40:54.356:E/AndroidRuntime(12591):在java.lang.reflect.Method.invoke(Method.java:511)
12-18 15:40:54.356:E/AndroidRuntime(12591):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-18 15:40:54.356:E/AndroidRuntime(12591):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-18 15:40:54.356:E/AndroidRuntime(12591):在dalvik.system.NativeStart.main(本机方法)
12-18 15:40:54.356:E/AndroidRuntime(12591):由以下原因引起:java.lang.NullPointerException:IBitmapDescriptorFactory未初始化
12-18 15:40:54.356:E/AndroidRuntime(12591):在com.google.android.gms.internal.at.a(未知来源)
12-18 15:40:54.356:E/AndroidRuntime(12591):位于com.google.android.gms.maps.model.BitmapDescriptorFactory.d(未知来源)
12-18 15:40:54.356:E/AndroidRuntime(12591):位于com.google.android.gms.maps.model.BitmapDescriptorFactory.fromResource(未知来源)
12-18 15:40:54.356:E/AndroidRuntime(12591):位于com.example.mapdemo.rawmappviewdemoActivity.setUpMap(rawmappviewdemoActivity.java:67)
12-18 15:40:54.356:E/AndroidRuntime(12591):在com.example.mapdemo.rawmappviewdemoActivity.setupmapifneed(rawmappviewdemoActivity.java:58)
12-18 15:40:54.356:E/AndroidRuntime(12591):在com.example.mapdemo.rawmappviewdemoactivity.onCreate(rawmappviewdemoactivity.java:43)
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.Activity.performCreate(Activity.java:5008)上
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)上
12-18 15:40:54.356:E/AndroidRuntime(12591):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
12-18 15:40:54.356:E/AndroidRuntime(12591):。。。还有11个

BitmapDescriptorFactory中显示:

在使用此类中的任何方法之前,必须执行以下操作之一以确保此类已初始化:

  • 等待GoogleMap从已添加到应用程序的MapFragment或MapView中可用。您可以通过调用getMap()方法并检查返回的对象是否为null来验证GoogleMap是否可用

  • 调用MapsInitializer.initialize(上下文)。只要未引发com.google.android.gms.common.GooglePlayServicesNotAvailableException GooglePlayServicesNotAvailableException,该类将正确初始化

我做了第一个,但仍然得到这个错误。有什么建议吗

onCreate()中调用MapsInitializer.initialize(getApplicationContext())

发表评论