谷歌地图的崩溃 [英] google map crash
本文介绍了谷歌地图的崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的谷歌地图。那时我用这个code选择当前位置的按钮越来越坠毁
如果(V == locateMeButton){
LocationManager locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
如果(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
showGPSDisabledAlert();
} 其他 {
名单<字符串>供应商= locationManager.getProviders(真正的);
位置位置= NULL;
的for(int i = providers.size() - 1; I> = 0;我 - ){
位置= locationManager.getLastKnownLocation(providers.get(一));
如果(位置!= NULL){
打破;
}
}
如果(位置!= NULL){
浮法P1 = Float.parseFloat(将String.valueOf(location.getLatitude()));
浮P2 =(Float.parseFloat(将String.valueOf(location.getLongitude())));
INT纬度=(INT)(P1 * 1E6);
INT LON =(INT)(P2 * 1E6);
GeoPoint对象的GeoPoint =新的GeoPoint(纬度,经度);
地图<字符串,字符串> MP =新的HashMap<字符串,字符串>();
mp.put(纬度,将String.valueOf(location.getLatitude()));
mp.put(经度,将String.valueOf(location.getLongitude()));
FlurryAgent.onEvent(位置,MP);
OverlayItem overlayItem =新OverlayItem(GeoPoint对象,NULL,NULL);
itemizedPosOverlay.clear();
itemizedPosOverlay.addOverlay(overlayItem);
mapOverlays.remove(itemizedPosOverlay);
mapOverlays.add(itemizedPosOverlay);
。mapView.getController()animateTo(GeoPoint对象);
} 其他 {
Toast.makeText(InfoMapView.this,无法找到当前位置,
Toast.LENGTH_LONG).show();
}
}
}
日志猫如下:
:致命异常:主要
12月11号至1日:51:48.420:E / AndroidRuntime(24123):java.lang.ArrayIndexOutOfBoundsException
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在java.util.ArrayList.get(ArrayList.java:313)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在com.countdown.tabs.InfoMapView.moreInfo(InfoMapView.java:153)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在com.countdown.map.MyItemizedOverlay.onInfoWindowTap(MyItemizedOverlay.java:55)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在com.countdown.map.InfoWindowItemizedOverlay $ 1.onClick(InfoWindowItemizedOverlay.java:78)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在android.view.View.performClick(View.java:2408)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在android.view.View $ PerformClick.run(View.java:8816)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在android.os.Handler.handleCallback(Handler.java:587)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在android.os.Handler.dispatchMessage(Handler.java:92)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在android.os.Looper.loop(Looper.java:123)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在android.app.ActivityThread.main(ActivityThread.java:4633)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在java.lang.reflect.Method.invokeNative(本机方法)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在java.lang.reflect.Method.invoke(Method.java:521)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:858)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12月11号至1日:51:48.420:E / AndroidRuntime(24123):在dalvik.system.NativeStart.main(本机方法)
12月11号至1日:51:48.430:W / ActivityManager(171):强制完成活动net.timessquareball.app / com.countdown.TabBarControllerActivity
12月11号至1日:51:48.580:W / AudioFlinger(95):写阻塞170毫秒,1209延迟写入,螺纹0xbb50
解决方案
某处错误无论是在:
名单,其中,字符串>供应商= locationManager.getProviders(真正的);
或
的for(int i = providers.size() - 1; I> = 0;我 - ){
位置= locationManager.getLastKnownLocation(providers.get(一));
由于你正在试图从ArrayList的一个对象,它实际上是不在索引中。核实。
- 检查的供应商列表的大小:在控制台上显示该值
providers.size()
My google map s getting crashed when i select the current location button using this code
if (v == locateMeButton) {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
showGPSDisabledAlert();
} else {
List<String> providers = locationManager.getProviders(true);
Location location = null;
for (int i = providers.size() - 1; i >= 0; i--) {
location = locationManager.getLastKnownLocation(providers.get(i));
if (location != null){
break;
}
}
if (location != null) {
Float p1=Float.parseFloat(String.valueOf(location.getLatitude()));
Float p2=(Float.parseFloat(String.valueOf(location.getLongitude())));
int lat = (int) (p1 * 1E6);
int lon = (int) (p2 * 1E6);
GeoPoint geoPoint = new GeoPoint(lat, lon);
Map<String,String> mp=new HashMap<String, String>();
mp.put("latitude", String.valueOf(location.getLatitude()));
mp.put("longitude", String.valueOf(location.getLongitude()));
FlurryAgent.onEvent("Locations", mp);
OverlayItem overlayItem = new OverlayItem(geoPoint, null, null);
itemizedPosOverlay.clear();
itemizedPosOverlay.addOverlay(overlayItem);
mapOverlays.remove(itemizedPosOverlay);
mapOverlays.add(itemizedPosOverlay);
mapView.getController().animateTo(geoPoint);
} else {
Toast.makeText(InfoMapView.this, "Unable To Find Current Location",
Toast.LENGTH_LONG).show();
}
}
}
the log cat is as follows:
: FATAL EXCEPTION: main
11-01 12:51:48.420: E/AndroidRuntime(24123): java.lang.ArrayIndexOutOfBoundsException
11-01 12:51:48.420: E/AndroidRuntime(24123): at java.util.ArrayList.get(ArrayList.java:313)
11-01 12:51:48.420: E/AndroidRuntime(24123): at com.countdown.tabs.InfoMapView.moreInfo(InfoMapView.java:153)
11-01 12:51:48.420: E/AndroidRuntime(24123): at com.countdown.map.MyItemizedOverlay.onInfoWindowTap(MyItemizedOverlay.java:55)
11-01 12:51:48.420: E/AndroidRuntime(24123): at com.countdown.map.InfoWindowItemizedOverlay$1.onClick(InfoWindowItemizedOverlay.java:78)
11-01 12:51:48.420: E/AndroidRuntime(24123): at android.view.View.performClick(View.java:2408)
11-01 12:51:48.420: E/AndroidRuntime(24123): at android.view.View$PerformClick.run(View.java:8816)
11-01 12:51:48.420: E/AndroidRuntime(24123): at android.os.Handler.handleCallback(Handler.java:587)
11-01 12:51:48.420: E/AndroidRuntime(24123): at android.os.Handler.dispatchMessage(Handler.java:92)
11-01 12:51:48.420: E/AndroidRuntime(24123): at android.os.Looper.loop(Looper.java:123)
11-01 12:51:48.420: E/AndroidRuntime(24123): at android.app.ActivityThread.main(ActivityThread.java:4633)
11-01 12:51:48.420: E/AndroidRuntime(24123): at java.lang.reflect.Method.invokeNative(Native Method)
11-01 12:51:48.420: E/AndroidRuntime(24123): at java.lang.reflect.Method.invoke(Method.java:521)
11-01 12:51:48.420: E/AndroidRuntime(24123): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-01 12:51:48.420: E/AndroidRuntime(24123): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-01 12:51:48.420: E/AndroidRuntime(24123): at dalvik.system.NativeStart.main(Native Method)
11-01 12:51:48.430: W/ActivityManager(171): Force finishing activity net.timessquareball.app/com.countdown.TabBarControllerActivity
11-01 12:51:48.580: W/AudioFlinger(95): write blocked for 170 msecs, 1209 delayed writes, thread 0xbb50
解决方案
Somewhere error either in:
List<String> providers = locationManager.getProviders(true);
or
for (int i = providers.size() - 1; i >= 0; i--) {
location = locationManager.getLastKnownLocation(providers.get(i));
Because you are trying to get an object from ArrayList which is actually not in index. Check it.
- Check the size of providers list: display this value on console
providers.size()
这篇关于谷歌地图的崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文