2017-09-05 6 views
0

私はマーカー、ポリライン、多角形、いくつかのクリックリスナーのようなオプションでアンドロイドマップアプリケーションを構築するための要件が​​あります。アプリはGoogle APIを使用してはならず、代わりにOSMデータを使用できます。私はカスタムタイルサーバーを持っていて、それをアプリケーションに統合することを探しています。私は同様に私が必要なものを提供するMapquestを見に来た。私が知っておかなければならないのは、自分のタイルサーバーをそれと統合できるかどうかということだけです。どんな助けもありがたいです賛否両論の地図提出android

+2

[Ask]をよく読んでください。現在のコードに特定の問題がある場合は、その特定の問題について質問してください。現在のコードが正確に機能し、より効率的に使用したい場合は、[コードレビュー](http://codereview.stackexchange.com/)の査読者に提示してください。人々があなたのためにそれを書くことを期待すれば、あなたは間違ったサイトにいる。これはお互いに助け合う場所ですが、私たちはあなたのためにそれをしません。スタックオーバーフローの詳細については、[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

関連する問題