GIS的学习(三十六)osmdroid 和google地图整合之图源重写

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

猜你喜欢

转载自topmanopensource.iteye.com/blog/1695561