在osmdroid中调用google地图采用可以采用两种方式实现:
方案一:采用mapsforget提供的google接口封装实现。
方案二:采用osmdroid的图源扩展实现。
本文采用方案二:
在研究Osmdroid和Google整合的过程中,发现使用mapforget有一些问题,于是采用扩展图层源的方式扩展osmdroid的图源支持
google地图的
具体的实现参考GoogleMapsTileSource类:
在研究适合发现地图显示部分为中文,部分显示英文,尚未找到真正的原因。
package com.etrip.osmdroid; import org.osmdroid.ResourceProxy.string; import org.osmdroid.tileprovider.MapTile; import org.osmdroid.tileprovider.tilesource.IStyledTileSource; import org.osmdroid.tileprovider.tilesource.OnlineTileSourceBase; /** * * 扩展osmdroid的图层源支持google格式的数据源头信息 * * * @author longgangbai * */ public class GoogleMapsTileSource extends OnlineTileSourceBase implements IStyledTileSource<Integer> { public GoogleMapsTileSource(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() + "&x=" + aTile.getX() + "&y=" + aTile.getY() + "&z=" + aTile.getZoomLevel(); } @Override public Integer getStyle() { return null; } @Override public void setStyle(Integer arg0) { } @Override public void setStyle(String arg0) { } }
具体实现如下:
package com.etrip.osmdroid; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapController; import org.osmdroid.views.MapView; import android.app.Activity; import android.os.Bundle; /** * * 在研究Osmdroid和Google整合的过程中,发现使用mapforget有一些问题,于是采用扩展图层源的方式扩展osmdroid的图源支持 * google地图的 * 具体的实现参考GoogleMapsTileSource类: * * * 在研究适合发现地图显示部分为中文,部分显示英文,尚未找到真正的原因。 * * * * * @author longgangbai */ public class MainActivity extends Activity { private MapController mapController; private MapView mapView; /** Called when the activity is first created. */ @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.map); mapView.setTileSource(new GoogleMapsTileSource("Google Maps", null, 1, 20, 256, ".png", new String[]{"http://mt3.google.com/vt/v=w2.97"})); mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); mapController.setZoom(15); GeoPoint geopoint=new GeoPoint(39.92605, 116.42616); mapController.setCenter(geopoint); } }