WEB开发网
开发学院手机开发Android 开发 Android中Google地图标记(Marker) 阅读

Android中Google地图标记(Marker)

 2010-07-15 20:05:00 来源:WEB开发网   
核心提示:同Polyline一样,地图标记Marker依旧没有出现在Android中的Map API中,Android中Google地图标记(Marker),自己动手实现了一个极其简单的Marker类,别的不多述,直接上代码,package com.blogbus.westyi.overlay;import android.gr

同Polyline一样,地图标记Marker依旧没有出现在Android中的Map API中。自己动手实现了一个极其简单的Marker类,别的不多述,直接上代码。

package com.blogbus.westyi.overlay;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Point;

import com.google.android.maps.GeoPoint;

import com.google.android.maps.MapView;

import com.google.android.maps.Overlay;

import com.google.android.maps.Projection;

/**

* 地图标记层

*

* @author westyi

*

*/

public class Marker extends Overlay {

private GeoPoint point = null;// 要插入标记的经纬度位置

private Bitmap bmp = null; // 标记使用的图标

private Point deviation = null; // 图标绘制偏移量

/**

* 指定GeoPoint,图标Bitmap及图标偏移量Point构造Marker.

*

* @param point

* 放置图标的GeoPoint

* @param bmp

* 图标Bitmap

* @param deviation

* 图标位置偏移量,canvas画图从左向右,从上到下计算坐标,所以偏移值一般是负值

*/

public Marker(GeoPoint point, Bitmap bmp, Point deviation) {

this.point = point;

this.bmp = bmp;

this.deviation = deviation;

}

/**

* 绘制图标,注意图标位置偏移量及地图坐标转换

*/

@Override

public void draw(Canvas canvas, MapView mapView, boolean shadow) {

if (!shadow) {// 不是绘制shadow层

Projection projection = mapView.getProjection();

if (point != null && bmp != null) {

Point pos = projection.toPixels(point, null);

//需要添加偏移量

canvas.drawBitmap(bmp, pos.x + deviation.x, pos.y + deviation.y, null);

}

}

}

}

Tags:Android Google 地图

编辑录入:coldstar [复制链接] [打 印]
赞助商链接