自定义地图瓦片 (Android)
4.00/5 (1投票)
一个使用 OSM (Open Street Map) 库为 Android 地图使用自定义瓦片服务器的简单示例
引言
在本文中,我想展示一个使用 OSM (Open Street Map) 库为 Android 地图使用自定义瓦片服务器的简单示例。
Using the Code
实现自定义瓦片源非常简单。首先需要做的是将 open-street-map jar 添加到你的项目中。对于新手来说
将外部 Jar 添加到你的 Android 项目或任何 Java 项目的最佳方法是
- 在你的项目根文件夹中创建一个名为 'libs' 的文件夹
- 将你的 Jar 文件复制到 libs 文件夹
- 现在 右键单击 Jar 文件,然后选择构建路径 > 添加到构建路径,这将在你的项目中创建一个名为 'Referenced Library' 的文件夹,你就完成了
这里,你可以找到最新版本的 osmdroid-android.jar。
现在不要忘记在你的 Manifest 文件中包含 Internet 权限
<uses-permission android:name="android.permission.INTERNET" />
以及另一个权限,允许瓦片提供程序访问网络状态
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在成功将库添加到你的项目后,你需要实现 TileSource。为此,你只需创建你的类,比如,名为 MyTileSource
public MyTileSource(String aName, string aResourceId, int aZoomMinLevel,
int aZoomMaxLevel, int aTileSizePixels,
String aImageFilenameEnding, String[] aBaseUrl) {
super(aName, aResourceId, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels,
aImageFilenameEnding, aBaseUrl);
}
@Override
public String getTileURLString(MapTile aTile) {
return getBaseUrl() + "?request=getTile&apikey="+ MY_API_KEY +
"&LayerName=E50931C3B2DD4E0FA2C03366552EEAA1" + "&z=" + aTile.getZoomLevel() + "&x=" +
aTile.getX() + "&y=" + aTile.getY();
}
}
实现非常简单。你只需要重写方法 getTileURLString。
在这个方法中,你需要构建到你的自定义瓦片的 URL。我的 URL 类似于 http://maps.kosmosnimki.ru/TileService.ashx?request=getTile&apikey=P8DQBF1TBW&LayerName=E50931C3B2DD4E0FA2C03366552EEAA1&z=9&x=2&y=2。
之后,你只需要将你的地图的 TileSource 设置为你的自定义 MyTileSource。
ITileSource _ITileSource = new MyTileSource("E50931C3B2DD4E0FA2C03366552EEAA1". null, 2, 13,
256, "", "http://maps.kosmosnimki.ru/TileService.ashx");
mapView.setTileSource(_ITileSource);
历史
如果我能帮助到你们中的任何一位,我将非常高兴!请留下评论,我会尽力改进我的文章!
如果你需要源代码 - 它可以在 这里获得。
