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编辑  收藏  举报

导航