在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); }
}