【发布时间】:2019-05-31 14:44:08
【问题描述】:
在 android 上使用 Gluon Maps 时,实际地图不会被加载。而是显示空白区域,我可以在日志中看到:
05-31 14:20:34.041 E/CachedOsmTileRetriever(18834): null
05-31 14:20:34.041 E/CachedOsmTileRetriever(18834): java.io.FileNotFoundException: http://tile.openstreetmap.org/16/33497/22228.png
05-31 14:20:34.041 E/CachedOsmTileRetriever(18834): at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251)
05-31 14:20:34.041 E/CachedOsmTileRetriever(18834): at com.gluonhq.impl.maps.tile.osm.CachedOsmTileRetriever$CacheThread.doCache(CachedOsmTileRetriever.java:189)
05-31 14:20:34.041 E/CachedOsmTileRetriever(18834): at com.gluonhq.impl.maps.tile.osm.CachedOsmTileRetriever$CacheThread.run(CachedOsmTileRetriever.java:157)
代码本身很简单:
private void showMap(Double lat, Double lon) {
mapView = new MapView();
PoiLayer poiLayer = new PoiLayer();
MapPoint mapPoint = new MapPoint(lat, lon);
poiLayer.addPoint(mapPoint, new Circle(7, Color.RED));
mapView.setZoom(16);
mapView.addLayer(poiLayer);
mapView.flyTo(0.1, mapPoint, 0.1);
tabMap.setContent(mapView);
}
同样的代码在 iOS 上也能正常工作:地图按预期加载。
使用
compile 'com.gluonhq:maps:1.0.2'
在 build.gradle 中(与 1.0.3 相同)
请注意,如果我在浏览器中输入 URL(来自上述异常),我会被重定向到 https:
http://tile.openstreetmap.org/16/33497/22228.png 到 https://tile.openstreetmap.org/16/33497/22228.png
任何想法为什么会在 android 上出现异常?
【问题讨论】:
-
您能否调试您的网络流量以查看来自网络服务器的实际答案? IE。错误代码和错误信息。也许您的请求无效,例如,如果它不包含有效的 HTTP 用户代理。详情请见operations.osmfoundation.org/policies/tiles。
-
另请参阅 OSM 开发人员列表中有关错误代码 403 的当前讨论:lists.openstreetmap.org/pipermail/dev/2019-May/030629.html。
-
“我的”请求是什么意思?我自己没有写任何请求,它应该封装在 Gluon Maps 代码中。另请注意,在 iOS 上一切正常。虽然我会看看我是否能得到网络服务器的响应。
-
我指的是您的应用正在发送的 HTTP 请求,而不管负责创建/发送它的确切代码部分。
-
java.io.IOException:服务器返回 HTTP 响应代码:403 用于 URL:tile.openstreetmap.org/16/39610/20480.png 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) 在 sun .net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) 在 com.gluonhq.impl.maps.tile.osm.CachedOsmTileRetriever$CacheThread.doCache(CachedOsmTileRetriever.java:189) 在 com.gluonhq.impl .maps.tile.osm.CachedOsmTileRetriever$CacheThread.run(CachedOsmTileRetriever.java:157)
标签: android openstreetmap gluon-mobile