2017-09-05 95 views
0

我有一个要求,建立一个像标记,折线,多边形和一些点击监听器选项的android地图应用程序。该应用程序不能使用谷歌API,而是可以使用OSM数据。我有一个自定义瓷砖服务器,并寻找它在应用程序中的集成。我遇到了同样提供我需要的Mapquest。我只需要知道我是否可以将自己的磁贴服务器与它整合在一起。任何帮助将不胜感激优点和缺点mapquest android

+2

请阅读[问问]。如果您对当前的代码有特定的问题,请询问具体问题。如果您当前的代码完全按照其应用的原则工作,并希望使其效率更高,请将其呈现给[代码审阅](http://codereview.stackexchange.com/)上的审阅者。如果你期望人们为你写,那么你在错误的网站。这是我们互相帮助的地方,但我们不会为你做。有关Stack Overflow的更多信息,可以查看[About]。另外,请查看[mcve]以了解如何为您的问题提供示例。 – Mike

回答

2

Mapquest使用OSMdroid无缝地集成为底图。话虽如此,它需要一个关键的工作。以下是我的底图切换器(它接收底图的索引并相应切换)。您可以选择很容易地在底图之间切换:

public boolean mapTileServerSwap() { 
    boolean flagOK = false; 
    String[] urlArray = {""}; 
    int mapTileServer = SessionPreferences.mapTileServer; 
    switch (mapTileServer) { 
     case(0): 
     default: 
      mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE); 
      flagOK = true; 
      break; 
     case(1): 
      urlArray[0] = "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/"; 
      mapView.setTileSource(new OnlineTileSourceBase("ArcGIS Online", null, 0, 18, 256, "", 
        urlArray) { 
       @Override 
       public String getTileURLString(MapTile aTile) { 
        String mImageFilenameEnding = ".png"; 
        return getBaseUrl() + aTile.getZoomLevel() + "/" + aTile.getY() + "/" + aTile.getX() 
          + mImageFilenameEnding; 
       } 
      }); 
      flagOK = true; 
      break; 
     case(2): 
      urlArray[0] = "http://basemap.nationalmap.gov/ArcGIS/rest/services/USGSTopo/MapServer/tile/"; 
      mapView.setTileSource(new OnlineTileSourceBase("USGS Topo", null, 0, 18, 256, "", 
        urlArray) { 
       @Override 
       public String getTileURLString(MapTile aTile) { 
        String mImageFilenameEnding = ".png"; 
        return getBaseUrl() + aTile.getZoomLevel() + "/" + aTile.getY() + "/" + aTile.getX() 
          + mImageFilenameEnding; 
       } 
      }); 
      flagOK = true; 
      break; 
     case(3): 
      mapView.setTileSource(TileSourceFactory.MAPQUESTAERIAL); 
      flagOK = true; 
      break; 
     case(4): 
      mapView.setTileSource(TileSourceFactory.MAPQUESTOSM); 
      flagOK = true; 
      break; 
     case(5): 
      //TODO 20160509 
      // fix copyright and attributions for STAMEN! 
      urlArray[0] = "http://a.tile.stamen.com/watercolor/"; 
      mapView.setTileSource(new XYTileSource("Stamen WaterColor", null, 0, 18, 256, ".jpg", 
        urlArray)); 
      flagOK = true; 
      break; 
     case(6): 
      urlArray[0] = "http://a.stamen.com/terrain/"; 
      mapView.setTileSource(new XYTileSource("Stamen Terrain", null, 0, 18, 256, ".jpg", 
        urlArray)); 
      flagOK = true; 
      break; 
    } 
    return flagOK; 
} 
+0

我的瓷砖服务器是在XYZ.png格式例如: http://tile.openstreetmap.org/{z}/{x}/{y}.png“我需要与我的应用程序集成我已附加我的代码与您在上面的实现在这里:https://drive.google.com/open?id=0ByXacZESDmJRTzdKWjR6WG5aQW8。帮助我,谢谢! – himagaran

+0

那么问题是什么?XYZ格式是osmdroid中的标准格式。 – scai

+0

@scai我实际上需要知道如何将我的磁贴服务器链接到我的源代码中,而不是使用mapquest – himagaran