谷歌地图的崩溃 [英] google map crash

查看:194
本文介绍了谷歌地图的崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的谷歌地图。那时我用这个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆