在地图中添加小地图和线路图层的使用:
源代码:
package com.geoserver.osmdroid;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.MyLocationOverlay;
import org.osmdroid.views.overlay.PathOverlay;
import org.osmdroid.views.overlay.ScaleBarOverlay;
import org.osmdroid.views.overlay.SimpleLocationOverlay;
import org.osmdroid.views.overlay.MinimapOverlay;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
/**
*
* 在osmdroid中 1.添加线路图层
* 2.添加小地图图层
* 3.跟踪当前位置移动
*
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:
* @Date:2012-8-24
* @author longgangbai
* @version 1.0
*/
public class GeoServerosmdroidActivity extends Activity {
private MapView mMapView;
private MapController mMapController;
int mIncr = 10000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setBuiltInZoomControls(true);
mMapView.setMultiTouchControls(true);
mMapController = mMapView.getController();
mMapController.setZoom(13);
//定位当前位置
MyLocationOverlay mylocationLayer=new MyLocationOverlay(GeoServerosmdroidActivity.this,mMapView);
mMapView.getOverlays().add(mylocationLayer);
mylocationLayer.enableCompass();
mylocationLayer.enableFollowLocation();
mylocationLayer.enableMyLocation();
//缩放图层
ScaleBarOverlay scalebar=new ScaleBarOverlay(GeoServerosmdroidActivity.this);
mMapView.getOverlays().add(scalebar);
//
SimpleLocationOverlay simpleLocation=new SimpleLocationOverlay(GeoServerosmdroidActivity.this);
mMapView.getOverlays().add(simpleLocation);
//小地图
MinimapOverlay minmap=new MinimapOverlay(GeoServerosmdroidActivity.this,mMapView.getHandler());
mMapView.getOverlays().add(minmap);
//线路每段的坐标
GeoPoint gPt0 = new GeoPoint(51500000, -150000);
GeoPoint gPt1 = new GeoPoint(gPt0.getLatitudeE6() + mIncr,
gPt0.getLongitudeE6());
GeoPoint gPt2 = new GeoPoint(gPt0.getLatitudeE6() + mIncr,
gPt0.getLongitudeE6() + mIncr);
GeoPoint gPt3 = new GeoPoint(gPt0.getLatitudeE6(),
gPt0.getLongitudeE6() + mIncr);
mMapController.setCenter(gPt0);
//线路
PathOverlay myPath = new PathOverlay(Color.RED, this);
myPath.addPoint(gPt0);
myPath.addPoint(gPt1);
myPath.addPoint(gPt2);
myPath.addPoint(gPt3);
myPath.addPoint(gPt0);
mMapView.getOverlays().add(myPath);
}
}
主要配置:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.easyway.osmdroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="GeoServerosmdroidActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:background="#FFFFFF" android:id="@+id/geoserver_layout" android:layout_height="fill_parent" > <org.osmdroid.views.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:enabled="true" /> </RelativeLayout>
版权声明:本文为longgangbai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。