解决高德地图the map must have a size 错误

来源:互联网 发布:逆回购 知乎 编辑:程序博客网 时间:2024/06/06 18:09
04-25 18:49:38.085: E/AndroidRuntime(12514): FATAL EXCEPTION: main
04-25 18:49:38.085: E/AndroidRuntime(12514): Process: net.tycmc.zuoyedemo, PID: 12514
04-25 18:49:38.085: E/AndroidRuntime(12514): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.tycmc.zuoyedemo/net.tycmc.zuoyedemo.MainActivity}: java.lang.IllegalStateException: the map must have a size
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2650)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2720)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.ActivityThread.-wrap12(ActivityThread.java)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.os.Handler.dispatchMessage(Handler.java:111)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.os.Looper.loop(Looper.java:207)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.ActivityThread.main(ActivityThread.java:5917)
04-25 18:49:38.085: E/AndroidRuntime(12514): at java.lang.reflect.Method.invoke(Native Method)
04-25 18:49:38.085: E/AndroidRuntime(12514): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
04-25 18:49:38.085: E/AndroidRuntime(12514): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
04-25 18:49:38.085: E/AndroidRuntime(12514): Caused by: java.lang.IllegalStateException: the map must have a size
04-25 18:49:38.085: E/AndroidRuntime(12514): at com.amap.api.mapcore.AMapDelegateImp.a(AMapDelegateImp.java:1182)
04-25 18:49:38.085: E/AndroidRuntime(12514): at com.amap.api.mapcore.AMapDelegateImp.a(AMapDelegateImp.java:1172)
04-25 18:49:38.085: E/AndroidRuntime(12514): at com.amap.api.mapcore.AMapDelegateImp.b(AMapDelegateImp.java:1165)
04-25 18:49:38.085: E/AndroidRuntime(12514): at com.amap.api.maps.AMap.animateCamera(AMap.java:421)
04-25 18:49:38.085: E/AndroidRuntime(12514): at net.tycmc.zuoyedemo.MainActivity.Mapinit(MainActivity.java:136)
04-25 18:49:38.085: E/AndroidRuntime(12514): at net.tycmc.zuoyedemo.MainActivity.onCreate(MainActivity.java:109)
04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.Activity.performCreate(Activity.java:6286)

04-25 18:49:38.085: E/AndroidRuntime(12514): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)

今天在做高德地图地图的时候程序异常退出。报出这样的错误。提示原因是如上。查找了好久没找到原因,我的代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


map = (MapView) findViewById(R.id.map);
map.onCreate(savedInstanceState);
if (map != null) {
aMap = map.getMap();
}
pathLatlngs.clear();
Mapinit();

}

  //在Oncreated方法里面控制范围,然后让地图直接显示在可视区域
  private void Mapinit(){
 LatLng lat1=new LatLng(33.65234,119.95852);
LatLng lat2=new LatLng(31.65234,119.95852);
//LatLng lat2=new LatLng(39.868823,116.37175);
pathLatlngs.add(lat1);
pathLatlngs.add(lat2);
Set<LatLng>set=new HashSet<LatLng>();
set.addAll(pathLatlngs);
//aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(lat1,8));
LatLngBounds.Builder builder = LatLngBounds.builder();
for (int i = 0; i < pathLatlngs.size(); i++) {
builder.include(pathLatlngs.get(i));
}
LatLngBounds latlngbounds = builder.build();
aMap.animateCamera(CameraUpdateFactory.newLatLngBounds(latlngbounds, 8));
  }

解决办法:报出这种错误的原因是地图还没有完全加载完成。我们就想要移动视野。。所以。我们只要等到地图完全加载完成再执行就好了,

上面代码中红色部分改为延迟3秒执行就好了

new Handler().postDelayed(new Runnable() {


@Override
public void run() {
// TODO Auto-generated method stub
Mapinit();
}
}, 3000);


















0 0
原创粉丝点击