Проблема с draw () в MapView ItemizedOverlay - PullRequest
1 голос
/ 27 августа 2010

Я разрабатываю приложение для парижского метро.Одной из функций является карта, на которой вы можете щелкнуть станции метро и посмотреть, какие линии метро и когда будут следующие 4 поезда на этой станции.

Поэтому я создал MapActivity и ItemizedOverlay классы.

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

Моя активность на картедобавляет ОДИН ItemizedOverlay, который отображает синюю точку для текущего местоположения пользователя.Это наложение также прослушивает onTap, который в зависимости от координат касания попытается найти станции метро (для которых я знаю координаты широты / долготы).Это работает отлично.

Трассировка сбоя трассировки:

java.lang.NullPointerException
at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42)
at com.google.android.maps.MapView.onDraw(MapView.java:494)
at android.view.View.draw(View.java:6535)
at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
at android.view.View.draw(View.java:6538)
at android.widget.FrameLayout.draw(FrameLayout.java:352)
at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
at android.view.View.draw(View.java:6538)
at android.widget.FrameLayout.draw(FrameLayout.java:352)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
at android.view.ViewRoot.draw(ViewRoot.java:1349)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

Иногда происходит из разных строк, но всегда заканчивается сбой на OverlayBunde.java:42

КакЭто не упоминает мой код, я не знаю, что не так.

Вы можете получить исходный код MapActivity и ItemizedOverlay: http://code.google.com/p/metroparis/source/browse/trunk/src/org/bicou/metro/

Деятельностькласс ACarteStations и класс оверлея StationMetroMapOverlay.

Я сожалею, что код написан на французском языке.Я переведу это в конце концов :) Если вам нужны переводы имен переменных, просто дайте мне знать.

Надеюсь, вы поможете мне !!

1 Ответ

1 голос
/ 27 августа 2010

Я предполагаю, что следующая ошибка (# 106) в ajouterOverlayPosition () является причиной вашей ошибки:

if (l == null) {
        return null;
}

Одна вещь, которая может произойти, это то, что устройство не может найти ваше местоположение (at lm.getLastKnownLocation (...), строка # 73).В этом случае вы возвращаете нуль и добавляете этот нуль к mapOverlays в onCreate ().onDraw () пытается отрисовать все наложения, включая это нулевое наложение, и генерируется исключение NullPointerException.

Возможно, вам следует по-другому относиться к проблеме с нулевым местоположением (возможно, отобразить журнал ошибок, или повторите попытку, или используйте некоторыерасположение по умолчанию ...).

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