好吧,这就是问题,我认为可以做类似
map.setSatellite(true);
的事情,但在 OSMdroid 中是不可能的。
还有一个麻烦是能不能下载地图,因为我需要离线工作,老板说应该可以下载地图。 我知道使用离线地图的唯一方法是用mobac制作地图,然后手动存储以供参考。
我读过一些有关使用 bing 的内容,但我不确定,你知道另一种方法吗?,我想我需要在线才能使用 bing 库。我说得对吗?
我知道发布这个答案为时已晚,但对其他人来说,这会有所帮助
OpenStreetMap(OSM) 不提供任何航空图像图层(卫星视图)。但是使用 MAPBOX 我们可以在 OSM 中实现卫星视图。
为此,请使用以下代码片段:
在 AndroidManifest 中添加此元数据
<meta-data
android:name="MAPBOX_MAPID"
android:value="satellite-streets-v11"/>
<meta-data
android:name="MAPBOX_ACCESS_TOKEN"
android:value="PUT_YOUR_MAPBOX_ACCESS_TOKEN"/>
创建MapBoxTileSourceFixed.java类如下
//waiting for osmdroid #1718 to be fixed:
class MapBoxTileSourceFixed extends MapBoxTileSource {
MapBoxTileSourceFixed(String name, int zoomMinLevel, int zoomMaxLevel, int tileSizePixels) {
super(name, zoomMinLevel, zoomMaxLevel, tileSizePixels, "");
}
@Override public String getTileURLString(final long pMapTileIndex) {
StringBuilder url = new StringBuilder("https://api.mapbox.com/styles/v1/mapbox/");
url.append(getMapBoxMapId());
url.append("/tiles/");
url.append(MapTileIndex.getZoom(pMapTileIndex));
url.append("/");
url.append(MapTileIndex.getX(pMapTileIndex));
url.append("/");
url.append(MapTileIndex.getY(pMapTileIndex));
//url.append("@2x"); //for high-res
url.append("?access_token=").append(getAccessToken());
String res = url.toString();
return res;
}
}
最后在mapview中设置MapBoxTileSource如下
OnlineTileSourceBase MAPBOXSATELLITELABELLED = new MapBoxTileSourceFixed("MapBoxSatelliteLabelled", 1, 19, 256);
((MapBoxTileSource) MAPBOXSATELLITELABELLED).retrieveAccessToken(this);
((MapBoxTileSource) MAPBOXSATELLITELABELLED).retrieveMapBoxMapId(this);
TileSourceFactory.addTileSource(MAPBOXSATELLITELABELLED);
map.setTileSource(MAPBOXSATELLITELABELLED);
map.getOverlayManager().getTilesOverlay().setColorFilter(null);
输出:
查看原始存储库这里
享受编码的乐趣:)
您可以使用MapBoxTileSource,并将satellite-streets-v12用作MAPBOX_MAPID。 您必须在 MapBox 网站上请求访问令牌。
MapBoxTileSource MAPBOXSATELLITELABELLED = new MapBoxTileSource("MapBoxSatelliteLabelled", 1, 19, 256, ".png");
MAPBOXSATELLITELABELLED.retrieveAccessToken(this);
MAPBOXSATELLITELABELLED.retrieveMapBoxMapId(this);
TileSourceFactory.addTileSource(MAPBOXSATELLITELABELLED);
mapView.setTileSource(MAPBOXSATELLITELABELLED);
在清单中:
<meta-data
android:name="MAPBOX_MAPID"
android:value="satellite-streets-v12"/>
<meta-data
android:name="MAPBOX_ACCESS_TOKEN"
android:value="... YOUR MAPBOX ACCESS TOKEN HERE ..."/>
您可以使用此代码进行谷歌地图卫星视图
getMap().setMapType( GoogleMap.MAP_TYPE_SATELLITE );
您也可以从此链接参考来实现谷歌地图
https://code.tutsplus.com/tutorials/getting-started-with-google-maps-for-android-basics--cms-24635
对于谷歌地图下载,您可以使用此参考 https://stackoverflow.com/a/19184812/6869491
希望对你有帮助