65.9K
CodeProject 正在变化。 阅读更多。
Home

自定义地图瓦片 (Android)

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2012 年 9 月 22 日

CPOL

1分钟阅读

viewsIcon

23110

downloadIcon

523

一个使用 OSM (Open Street Map) 库为 Android 地图使用自定义瓦片服务器的简单示例

引言

在本文中,我想展示一个使用 OSM (Open Street Map) 库为 Android 地图使用自定义瓦片服务器的简单示例。

Using the Code

实现自定义瓦片源非常简单。首先需要做的是将 open-street-map jar 添加到你的项目中。对于新手来说

将外部 Jar 添加到你的 Android 项目或任何 Java 项目的最佳方法是
  1. 在你的项目根文件夹中创建一个名为 'libs' 的文件夹
  2. 将你的 Jar 文件复制到 libs 文件夹
  3. 现在 右键单击 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);   

历史

如果我能帮助到你们中的任何一位,我将非常高兴!请留下评论,我会尽力改进我的文章!

如果你需要源代码 - 它可以在 这里获得。

© . All rights reserved.