Не могу использовать Mapoverlays в Android .. Продолжайте получать нулевое исключение - PullRequest
0 голосов
/ 04 февраля 2012

Я пробовал каждый пример, который мог найти в Google, и каждое решение, которое я мог найти как на stackoverflow, так и на других сайтах .. Но это я просто не могу приступить к работе ..

Теперь я использую пример с Androidсобственный сайт, где я создаю отдельный класс.Это мой код:

        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);

С помощью Log.di можно найти точку сбоя, которая выдает ошибку нулевой точки, быть строкой: List mapOverlays = mapView.getOverlays ();

Мой ключ API работает нормально, потому что я могу увидеть карту, если удаляю 6 строк кода mapoverlay.Не знаю, означает ли это что-нибудь, но я получаю эти Logcats, когда у меня нет оверлейного кода.

02-03 22: 44: 05.892: I / MapActivity (2374): Обработка уведомления об изменении сети: СОЕДИНЕНО 02-03 22: 44: 05.892: E / MapActivity (2374): не удалось получить клиент фабрики соединений

И если я включил оверлейный код, он вылетает, и я получаю Logcat: 02-03 22:45:33.183: E / AndroidRuntime (2465): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 02-03 22: 45: 33.183: E / AndroidRuntime (2465): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {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.invokeNative (собственный метод) 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): at 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)

я пробовална эмуляторе и на моем Galaxy S2 .. Пожалуйста, помогите, я действительно не хочу, чтобы это работало

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Я знаю, что в документации по этому образцу есть ошибка. По памяти я думаю, что конструктор просто неправильно. Я думаю, что это должно быть

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
        // super(defaultMarker); <<<< REPLACE THIS WITH THE LINE BELOW
        super(boundCenterBottom(defaultMarker));
        mContext = context;
    }
0 голосов
/ 04 февраля 2012

Используя Log.d, я могу найти точку сбоя, которая дает ошибку нулевой точки, быть строкой: List mapOverlays = mapView.getOverlays ();

Где вы объявляете и инициализируете переменную mapView? Единственная переменная типа MapView, которую я вижу инициализированной, это map.

MapView map = (MapView) findViewById(R.id.googlemap) ;

Итак, я бы попробовал:

List<Overlay> mapOverlays = map.getOverlays();

Если по-прежнему происходит сбой с ошибкой нулевого указателя, представление MapView в макете win_showmap.xml не объявлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...