您的位置:首页 > 移动开发 > Android开发

GoogleMap学习——Android学习笔记

2012-10-17 00:11 295 查看
在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" />


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidgooglemaptext"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="com.google.android.maps"/>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />   <uses-permission android:name="android.permission.INTERNET"/>
</manifest>


xml中一般写法

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.google.android.maps.MapView android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:apiKey="0rkDwKdJeAcrKXismOod8zeo2oqJVB5Kq6GrujQ"
android:enabled="true"
android:id="@+id/mapViewId"
android:clickable="true"
/>
</RelativeLayout>


Activity:

package com.example.androidgooglemaptext;

import java.util.List;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Menu;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;

public class MainActivity extends MapActivity {

private Projection projection;
private List<Overlay> overlays;
private MapController mapController;
private GeoPoint beginGeoPoint;
private GeoPoint endGeoPoint;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

beginGeoPoint = new GeoPoint(19240000, -99120000);
endGeoPoint = new GeoPoint(19340000, -99220000);

MapView mapView = (MapView) findViewById(R.id.mapViewId);
mapView.setBuiltInZoomControls(true);
// mapController主要用于对地图进行控制
mapController = mapView.getController();
overlays = mapView.getOverlays();
projection = mapView.getProjection();

overlays.add(new PointOverlay(beginGeoPoint));
overlays.add(new PointOverlay(endGeoPoint));
overlays.add(new LineOverlay(beginGeoPoint, endGeoPoint));
// 将地图以动画的形式移动到指定的点
mapController.animateTo(beginGeoPoint);
// 设置地图的放大级别
mapController.setZoom(12);
}

class LineOverlay extends Overlay {
private GeoPoint begin;
private GeoPoint end;

public LineOverlay() {
}

public LineOverlay(GeoPoint begin, GeoPoint end) {
this.begin = begin;
this.end = end;
}

@Override
public void draw(Canvas arg0, MapView arg1, boolean arg2) {
super.draw(arg0, arg1, arg2);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
// 设置线条的样式(填满的空心线)
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(2);
Point beginPoint = new Point();
Point endPoint = new Point();
Path path = new Path();
projection.toPixels(beginGeoPoint, beginPoint);
projection.toPixels(endGeoPoint, endPoint);
// 指定划线的起始
path.moveTo(beginPoint.x, beginPoint.y);
// 指定划线的终点
path.lineTo(endPoint.x, endPoint.y);
arg0.drawPath(path, paint);
}

}

class PointOverlay extends Overlay {
private GeoPoint geoPoint;

public PointOverlay() {
// TODO Auto-generated constructor stub
}

public PointOverlay(GeoPoint geoPoint) {
this.geoPoint = geoPoint;
}

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
Point point = new Point();
// 将geoPoint转换为屏幕上的X、Y轴坐标
projection.toPixels(geoPoint, point);
// 位图
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.tool);
Paint paint = new Paint();
// Y轴-30是为了调整图片的显示位置(默认是讲图片的左上角对应到经纬度点)
canvas.drawBitmap(bmp, point.x, point.y - 16, paint);
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

@Override
protected boolean isRouteDisplayed() {
return false;
}
}


结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: