5

我需要将自定义基础图层添加到我的地图视图中。我的理解是地图图块与谷歌图块完全相同。它们是以下列格式提供的静态文件:http:///tilecache///.png

例如,http:///tilecache/6/16/26.png 是佛罗里达州阿拉巴马州和密西西比州之间的墨西哥湾沿岸。

如何使用瓷砖创建叠加层?

4

3 回答 3

2

osmdroid(如上所述)很酷但非常庞大。前段时间我决定改用http://sourceforge.net/projects/libwlocate/ - 它包含显示/滚动/缩放地图的功能,例如 osmdroid,但您可以选择使用 OSM、谷歌地图或谷歌卫星视图。

如何使用它的示例可以在http://libwlocate.git.sourceforge.net/git/gitweb.cgi?p=libwlocate/libwlocate;a=blob;f=master/android/LocDemo/src/com/中找到vwp/locdemo/LocDemo.java;h=5e2134fb7d197258f5f4f6f9021d2fa9ad9f2d9a;hb=HEAD

于 2012-12-04T12:54:10.560 回答
1

我建议使用osmdroid。您可以扩展 OnlineTileSourecBase。

public class YourTileSource extends OnlineTileSourceBase implements IStyledTileSource<Integer> {

public YourTileSource (String aName, string aResourceId,
    int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels,
    String aImageFilenameEnding, String aBaseUrl) {
    super(aName, aResourceId, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels,
            aImageFilenameEnding, aBaseUrl);
}

public void setStyle(Integer style) {
    // TODO Auto-generated method stub
}

public void setStyle(String style) {
    // TODO Auto-generated method stub
}

public Integer getStyle() {
    // TODO Auto-generated method stub
    return null;
}

@Override
public String getTileURLString(MapTile aTile) {
    return getBaseUrl() + "/" + aTile.getX() + "/" + aTile.getY() + "/" + aTile.getZoomLevel() + ".png";
}

}

然后将您的瓦片源添加到您的地图视图中:

TileSourceFactory.addTileSource(new YourTileSource ("YourTileSource", null, 1, 20, 256, ".png", "http:///tilecache/"));
mapView.setTileSource(TileSourceFactory.getTileSource("YourTileSource"));

您的 mapView 需要是 org.osmdroid.views.MapView 才能工作。OSMdroid 类应该替换所有的谷歌地图类。

首先下载osmdroid-android-3.0.8.jar文件,将其添加到项目中的 libs 文件夹中,然后通过右键单击 > 属性 > Java 构建路径 > 库 > 添加 Jar 将其添加到项目中,然后找到它在 libs 文件夹中。如果您有更多问题,请发布更多问题,我对 osmdroid 有很多经验。

于 2012-06-22T14:37:47.953 回答
0

对于较新版本的 OSMDroid,构造函数的aResourceId参数已被删除,最后一个参数aBaseUrl是一个String[]

public YourTileSource (String aName, 
    int aZoomMinLevel, 
    int aZoomMaxLevel, 
    int aTileSizePixels,
    String aImageFilenameEnding, 
    String[] aBaseUrl) {

    super(aName, 
          aZoomMinLevel, 
          aZoomMaxLevel, 
          aTileSizePixels, 
          aImageFilenameEnding, 
          aBaseUrl);
}
于 2015-11-30T16:20:20.857 回答