【发布时间】:2012-03-13 09:43:57
【问题描述】:
我正在使用 OSMdroid api 来显示自定义图块。他们确实为此提供了 Google 包装器。所以尝试从我的本地服务器显示图块
这是我的代码
final MapTileProviderBasic tileProvider = new MapTileProviderBasic(getApplicationContext());
final ITileSource tileSource = new XYTileSource("SomeName", null, 3, 20, 256, ".png",
"http://MyServer/tiles/");
tileProvider.setTileSource(tileSource);
final GoogleTilesOverlay tilesOverlay = new GoogleTilesOverlay(tileProvider, this.getBaseContext());
mapView.getOverlays().add(tilesOverlay);
在布局中我已经通过以下方式声明了地图视图
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="my API Key"
/>
如果我将图块放在 sdcard 下并使用以下代码,则效果很好
mProvider = new MapTileProviderBasic(getApplicationContext());
mProvider.setTileSource(TileSourceFactory.FIETS_OVERLAY_NL);
mTilesOverlay = new GoogleTilesOverlay(mProvider,getParent());
mTilesOverlay.setUseDataConnection(false);
mTilesOverlay.useDataConnection();
mapView.getOverlays().add(mTilesOverlay);
mapView.invalidate();
【问题讨论】:
-
您是否检查过该网址是否有效? (在设备上的浏览器中使用 url 并确保显示磁贴)
-
是的,如果我按照以下方式将网址放在浏览器上MyServer/tiles/15/x_y.png
-
日志文件怎么样?您需要查看它尝试获取磁贴时发生的情况。或者您可以使用调试器对代码进行断点,以查看当它尝试获取文件时会发生什么。或者您可以尝试使用 OSM 磁贴提供程序。你能在服务器日志中看到对磁贴的请求吗?
-
是我的瓷砖命名正确。我使用 maptiles 创建了它们
-
好点,我的瓦片服务器(使用 mapnik 构建)使用 zoom/x/y.png,我假设您的本地副本将使用与服务器相同的内容。检查服务器日志将告诉您它要求服务器确认这一点。
标签: android dictionary customization tiles osmdroid