我正在尝试使用osmdroid Bus_station
使NominatimPOIProvider
靠近我的位置,但是我收到以下NullException
:
java.lang.IllegalArgumentException:南部必须在 [-85.05112877980658,85.05112877980658] 在org.osmdroid.util.BoundingBox.set(BoundingBox.java:69)上。
我确定坐标没有在我所在位置附近的任何点
所以这是我实现逻辑的方法
public void poinOfInt(View view){
bus_stop = myLocationNewOverlay.getMyLocation();
NominatimPOIProvider poiProvider = new NominatimPOIProvider( BuildConfig.APPLICATION_ID);
ArrayList<POI> pois = poiProvider.getPOICloseTo(bus_stop, "highway", 50, 100);
FolderOverlay poiMarkers = new FolderOverlay();
map.getOverlays().add(poiMarkers);
Drawable poiIcon = getResources().getDrawable(R.drawable.marker_default);
for (POI poi:pois){
Marker poiMarker = new Marker(map);
poiMarker.setTitle(poi.mType);
poiMarker.setSnippet(poi.mDescription);
poiMarker.setPosition(poi.mLocation);
poiMarker.setIcon(poiIcon);
/* if (poi.mThumbnail != null){
poiItem.setImage(new BitmapDrawable(poi.mThumbnail));
}*/
poiMarkers.add(poiMarker);
}
}
我收到以下错误:
E / Android运行时:致命异常:主要 流程:com.example.xibomba,PID:6617 java.lang.IllegalStateException:无法执行android:onClick的方法 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) 在android.view.View.performClick(View.java:4754) 在android.view.View $ PerformClick.run(View.java:19605) 在android.os.Handler.handleCallback(Handler.java:733) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:146) 在android.app.ActivityThread.main(ActivityThread.java:5752) 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1291) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 在dalvik.system.NativeStart.main(本机方法) 造成原因:java.lang.reflect.InvocationTargetException 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 在android.view.View.performClick(View.java:4754) 在android.view.View $ PerformClick.run(View.java:19605) 在android.os.Handler.handleCallback(Handler.java:733) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:146) 在android.app.ActivityThread.main(ActivityThread.java:5752) 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1291) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 在dalvik.system.NativeStart.main(本机方法) 引起原因:java.lang.IllegalArgumentException:南部必须位于[-85.05112877980658,85.05112877980658] 在org.osmdroid.util.BoundingBox.set(BoundingBox.java:69) 在org.osmdroid.util.BoundingBox(BoundingBox.java:43) 在org.osmdroid.bonuspack.location.NominatimPOIProvider.getUrlCloseTo(NominatimPOIProvider.java:73) 在org.osmdroid.bonuspack.location.NominatimPOIProvider.getPOICloseTo(NominatimPOIProvider.java:132) 在com.example.xibomba.MapaActivity.poinOfInt(MapaActivity.java:193) 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 在android.view.View.performClick(View.java:4754) 在android.view.View $ PerformClick.run(View.java:19605) 在android.os.Handler.handleCallback(Handler.java:733) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:146) 在android.app.ActivityThread.main(ActivityThread.java:5752) 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1291) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 在dalvik.system.NativeStart.main(本机方法)
答案 0 :(得分:0)
poiProvider.getPOICloseTo
方法的最后一个参数应该以度为单位(文档说:“ maxDistance to position,以度为单位。请注意,它用于围绕该位置而不是圆形来构建边界框。”)。您通过了100
,这对学位来说是很高的价值,所以也许您假设这些单位是千米或米。尝试使用较小的值,例如0.1
,0.2
或类似的as in examples。
答案 1 :(得分:0)
提供用于设置bus_stop地理位置的代码。
(顺便说一句,搜索“高速公路”将不会到达公交车站)