com.baidu.mapapi
类 MyLocationOverlay

java.lang.Object
  继承者 com.baidu.mapapi.Overlay
      继承者 com.baidu.mapapi.MyLocationOverlay
所有已实现的接口:
LocationListener, Overlay.Snappable

public class MyLocationOverlay
extends Overlay
implements LocationListener, Overlay.Snappable

一个负责显示用户当前位置的Overlay。

Overlay是一个覆盖,它绘制用户当前在地图上的位置(精准度),和/或一个嵌入的指南针。子类能覆盖方法dispatchTap()去处理对当前位置的点击。

为了开启这个overlay的功能,需要去调用enableMyLocation()和/或enableCompass(), 或调用Activity中的Activity.onResume()方法。记住,当在后台是,要在Activity中的Activity.onPause()方法中调用相应的disableMyLocation()和/或disableCompass()关闭这个功能。


嵌套类摘要
 
从类 com.baidu.mapapi.Overlay 继承的嵌套类/接口
Overlay.Snappable
 
字段摘要
 
从类 com.baidu.mapapi.Overlay 继承的字段
SHADOW_X_SKEW, SHADOW_Y_SCALE
 
构造方法摘要
MyLocationOverlay(android.content.Context context, MapView mapView)
          构造一个新的MyLocationOverlay。
 
方法摘要
 void disableCompass()
          关闭指南针的更新。
 void disableMyLocation()
          停止位置更新。
protected  boolean dispatchTap()
          在“我的位置”坐标上处理点击事件。
 boolean draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow, long when)
          绘制方法。
protected  void drawCompass(android.graphics.Canvas canvas, float bearing)
          绘制指南针。
protected  void drawMyLocation(android.graphics.Canvas canvas, MapView mapView, android.location.Location lastFix, GeoPoint myLocation, long when)
          绘制“我的位置”点。
 boolean enableCompass()
          开启指南针更新功能。
 boolean enableMyLocation()
          尝试开启MyLocation功能,并向MKLocationManager.GPS_PROVIDER和MKLocationManager.NETWORK_PROVIDER注册更新。
 Location getLastFix()
          返回一个位置,对应于最近设定的用户位置。
 GeoPoint getMyLocation()
          返回一个GeoPoint,对应于一个最近设定的用户位置。
 float getOrientation()
          返回最近设定的的指南针朝向。
 boolean isCompassEnabled()
          检查指南针小部件是否被显示。
 boolean isMyLocationEnabled()
           
 void onAccuracyChanged(Sensor sensor, int accuracy)
           
 void onLocationChanged(Location location)
          监听并获取位置更新。
 void onProviderDisabled(java.lang.String provider)
           
 void onProviderEnabled(java.lang.String provider)
           
 void onSensorChanged(SensorEvent event)
          当指南针的值变换时,由SensorManager调用。
 boolean onSnapToItem(int x, int y, android.graphics.Point snapPoint, MapView mapView)
          检查给定的(x,y)是否和引起当前行为(如缩放)的item足够靠近。
 boolean onTap(GeoPoint p, MapView map)
          检查点击的位置是否非常接近于当前的位置(如果已知)。
 boolean runOnFirstFix(java.lang.Runnable runnable)
          把一个runnable加入队列,一旦收到一个位置信息,这个runnable就被执行。
 
从类 com.baidu.mapapi.Overlay 继承的方法
draw, drawAt, onKeyDown, onKeyUp, onTouchEvent, onTrackballEvent
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

MyLocationOverlay

public MyLocationOverlay(android.content.Context context,
                         MapView mapView)
构造一个新的MyLocationOverlay。

参数:
context - 一个用于访问系统服务的上下文。
mapView - 将要叠加位置上去的MapView。
抛出:
如果mapView为null,则抛出java.lang.IllegalArgumentException异常。
方法详细信息

onLocationChanged

public void onLocationChanged(Location location)
监听并获取位置更新。

指定者:
接口 LocationListener 中的 onLocationChanged

enableCompass

public boolean enableCompass()
开启指南针更新功能。 如果已经开启,则无须改变。对于没有指南针功能的手机,不支持Compass的相关方法。

返回:
如果开启请求成功,返回true;如果指南针不能被开启,返回false。

disableCompass

public void disableCompass()
关闭指南针的更新。


isCompassEnabled

public boolean isCompassEnabled()
检查指南针小部件是否被显示。

返回:
如果指南针已被显示返回true,否则返回false。

enableMyLocation

public boolean enableMyLocation()
尝试开启MyLocation功能,并向MKLocationManager.GPS_PROVIDER和MKLocationManager.NETWORK_PROVIDER注册更新。

返回:
如果发现至少一个位置提供者,返回true。如果我们尝试的每一个都无法得到,返回false。

disableMyLocation

public void disableMyLocation()
停止位置更新。

即使当前的位置更新已经被关闭,调用这个方法也是安全的。


isMyLocationEnabled

public boolean isMyLocationEnabled()

onSnapToItem

public boolean onSnapToItem(int x,
                            int y,
                            android.graphics.Point snapPoint,
                            MapView mapView)
从接口 Overlay.Snappable 复制的描述
检查给定的(x,y)是否和引起当前行为(如缩放)的item足够靠近。

指定者:
接口 Overlay.Snappable 中的 onSnapToItem
参数:
x - 屏幕的x坐标
y - 屏幕的y坐标
snapPoint - 存放对于给定(x,y)最近的兴趣点(屏幕坐标)。如果没有对齐则不可触摸
mapView - 申请对齐的MapView
返回:
是否去对齐兴趣点

onTap

public boolean onTap(GeoPoint p,
                     MapView map)
检查点击的位置是否非常接近于当前的位置(如果已知)。 如果为真,传递给 dispatchTap(); 否则返回false。处理一个点击事件。这可能是个地图任何地方的触屏。默认情况下不做任何动作,返回false。

覆盖:
Overlay 中的 onTap
参数:
p - 点击的位置点。
map - 产生tap事件的MapView。
返回:
如果点击被这个overlay处理,返回true。

dispatchTap

protected boolean dispatchTap()
在“我的位置”坐标上处理点击事件。 默认行为是什么都不做,返回false。

返回:
如果这个点击被处理,返回true;如果这个点击事件应该被传递到其它overlay,返回false。

draw

public boolean draw(android.graphics.Canvas canvas,
                    MapView mapView,
                    boolean shadow,
                    long when)
绘制方法。 在阴影穿透模式下什么都不做。在非阴影穿透模式下,如果得到一个位置信息,调用drawMyLocation(android.graphics.Canvas, com.autonavi.mapapi.MapView, android.location.Location, com.autonavi.mapapi.GeoPoint, long),然后如果能够阅读指南针则调用drawCompass(android.graphics.Canvas, float) 因为我们不要求立即重绘所以返回false;但是,为了能触发下一阶段蓝色位置点的动画,viewToInvalidate会发出延迟的无效通知,并传递给这个类的构造器。

覆盖:
Overlay 中的 draw
参数:
canvas - 待绘制的画布。
mapView - 请求绘制的MapView。
shadow - 如果为true,绘制阴影层。
when - 绘制的时间,毫秒。
返回:
如果需要立即绘制,返回true。否则返回false。默认的实现返回false。

drawMyLocation

protected void drawMyLocation(android.graphics.Canvas canvas,
                              MapView mapView,
                              android.location.Location lastFix,
                              GeoPoint myLocation,
                              long when)
绘制“我的位置”点。 默认情况下,绘制一个动画的“蓝色点”,可能由一个蓝色圆盘所围绕来标识精度。而且, 如果用户的位置移动到屏幕的边缘,我们已经在构造函数力提供了一个MapController , 将使用滚动来重新确定地图的中心。

参数:
canvas - 待绘制的画布。
mapView - 调用绘制方法的mapView。
lastFix - 最后一个收到的位置信息。
myLocation - 最后一个位置的坐标,萃取成为一个方便的GeoPoint。
when - 绘制的时间,毫秒。

drawCompass

protected void drawCompass(android.graphics.Canvas canvas,
                           float bearing)
绘制指南针。 默认情况下,在左上角绘制指南针的底盘和箭头。

参数:
canvas - 待绘制的画布。
bearing - 估算出来的手机的朝向,东方方向。

getMyLocation

public GeoPoint getMyLocation()
返回一个GeoPoint,对应于一个最近设定的用户位置。

返回:
一个GeoPoint,或null如果没有设定任何东西。

getLastFix

public Location getLastFix()
返回一个位置,对应于最近设定的用户位置。

返回:
位置,如果设定为null则返回null。

getOrientation

public float getOrientation()
返回最近设定的的指南针朝向。

返回:
朝向,东方方向的度数,如果没有设置,则返回NaN。

runOnFirstFix

public boolean runOnFirstFix(java.lang.Runnable runnable)
把一个runnable加入队列,一旦收到一个位置信息,这个runnable就被执行。 如果已经有了一个位置,则立即执行runnable,且返回true。如果没有,将挂起这个runnable,且返回false。 一旦得到一个新的位置信息,将在一个新的线程中运行这个runnable。


onAccuracyChanged

public void onAccuracyChanged(Sensor sensor,
                              int accuracy)

onProviderDisabled

public void onProviderDisabled(java.lang.String provider)

onProviderEnabled

public void onProviderEnabled(java.lang.String provider)

onSensorChanged

public void onSensorChanged(SensorEvent event)
当指南针的值变换时,由SensorManager调用。