GoogleMap学习——Android学习笔记
在Androidmanifest中申明
1.<uses-library android:name="com.google.android.maps"/>
2.<uses-permission android:name="android.permission.INTERNET"/>
3. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
4.<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2 package="com.example.androidgooglemaptext" 3 android:versionCode="1" 4 android:versionName="1.0" > 5 6 <uses-sdk 7 android:minSdkVersion="10" 8 android:targetSdkVersion="15" /> 9 10 <application 11 android:icon="@drawable/ic_launcher" 12 android:label="@string/app_name" 13 android:theme="@style/AppTheme" > 14 <uses-library android:name="com.google.android.maps"/> 15 <activity 16 android:name=".MainActivity" 17 android:label="@string/title_activity_main" > 18 <intent-filter> 19 <action android:name="android.intent.action.MAIN" /> 20 21 <category android:name="android.intent.category.LAUNCHER" /> 22 </intent-filter> 23 </activity> 24 </application> 25 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 26 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />27 <uses-permission android:name="android.permission.INTERNET"/> 28 </manifest>
xml中一般写法
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" > 5 6 <com.google.android.maps.MapView android:layout_height="fill_parent" 7 android:layout_width="fill_parent" 8 android:apiKey="0rkDwKdJeAcrKXismOod8zeo2oqJVB5Kq6GrujQ" 9 android:enabled="true" 10 android:id="@+id/mapViewId" 11 android:clickable="true" 12 /> 13 </RelativeLayout>
Activity:
1 package com.example.androidgooglemaptext; 2 3 import java.util.List; 4 5 import android.graphics.Bitmap; 6 import android.graphics.BitmapFactory; 7 import android.graphics.Canvas; 8 import android.graphics.Color; 9 import android.graphics.Paint; 10 import android.graphics.Path; 11 import android.graphics.Point; 12 import android.os.Bundle; 13 import android.view.Menu; 14 15 import com.google.android.maps.GeoPoint; 16 import com.google.android.maps.MapActivity; 17 import com.google.android.maps.MapController; 18 import com.google.android.maps.MapView; 19 import com.google.android.maps.Overlay; 20 import com.google.android.maps.Projection; 21 22 public class MainActivity extends MapActivity { 23 24 private Projection projection; 25 private List<Overlay> overlays; 26 private MapController mapController; 27 private GeoPoint beginGeoPoint; 28 private GeoPoint endGeoPoint; 29 30 @Override 31 public void onCreate(Bundle savedInstanceState) { 32 super.onCreate(savedInstanceState); 33 setContentView(R.layout.activity_main); 34 35 beginGeoPoint = new GeoPoint(19240000, -99120000); 36 endGeoPoint = new GeoPoint(19340000, -99220000); 37 38 MapView mapView = (MapView) findViewById(R.id.mapViewId); 39 mapView.setBuiltInZoomControls(true); 40 // mapController主要用于对地图进行控制 41 mapController = mapView.getController(); 42 overlays = mapView.getOverlays(); 43 projection = mapView.getProjection(); 44 45 overlays.add(new PointOverlay(beginGeoPoint)); 46 overlays.add(new PointOverlay(endGeoPoint)); 47 overlays.add(new LineOverlay(beginGeoPoint, endGeoPoint)); 48 // 将地图以动画的形式移动到指定的点 49 mapController.animateTo(beginGeoPoint); 50 // 设置地图的放大级别 51 mapController.setZoom(12); 52 } 53 54 class LineOverlay extends Overlay { 55 private GeoPoint begin; 56 private GeoPoint end; 57 58 public LineOverlay() { 59 } 60 61 public LineOverlay(GeoPoint begin, GeoPoint end) { 62 this.begin = begin; 63 this.end = end; 64 } 65 66 @Override 67 public void draw(Canvas arg0, MapView arg1, boolean arg2) { 68 super.draw(arg0, arg1, arg2); 69 Paint paint = new Paint(); 70 paint.setColor(Color.BLUE); 71 // 设置线条的样式(填满的空心线) 72 paint.setStyle(Paint.Style.FILL_AND_STROKE); 73 paint.setStrokeWidth(2); 74 Point beginPoint = new Point(); 75 Point endPoint = new Point(); 76 Path path = new Path(); 77 projection.toPixels(beginGeoPoint, beginPoint); 78 projection.toPixels(endGeoPoint, endPoint); 79 // 指定划线的起始 80 path.moveTo(beginPoint.x, beginPoint.y); 81 // 指定划线的终点 82 path.lineTo(endPoint.x, endPoint.y); 83 arg0.drawPath(path, paint); 84 } 85 86 } 87 88 class PointOverlay extends Overlay { 89 private GeoPoint geoPoint; 90 91 public PointOverlay() { 92 // TODO Auto-generated constructor stub 93 } 94 95 public PointOverlay(GeoPoint geoPoint) { 96 this.geoPoint = geoPoint; 97 } 98 99 @Override 100 public void draw(Canvas canvas, MapView mapView, boolean shadow) { 101 super.draw(canvas, mapView, shadow); 102 Point point = new Point(); 103 // 将geoPoint转换为屏幕上的X、Y轴坐标 104 projection.toPixels(geoPoint, point); 105 // 位图 106 Bitmap bmp = BitmapFactory.decodeResource(getResources(), 107 R.drawable.tool); 108 Paint paint = new Paint(); 109 // Y轴-30是为了调整图片的显示位置(默认是讲图片的左上角对应到经纬度点) 110 canvas.drawBitmap(bmp, point.x, point.y - 16, paint); 111 } 112 113 } 114 115 @Override 116 public boolean onCreateOptionsMenu(Menu menu) { 117 getMenuInflater().inflate(R.menu.activity_main, menu); 118 return true; 119 } 120 121 @Override 122 protected boolean isRouteDisplayed() { 123 return false; 124 } 125 }
结果
posted on 2012-10-17 00:11 liyajun2012 阅读(211) 评论(0) 编辑 收藏 举报