com.lingtu.mapapi 类 MapView

java.lang.Object
  继承者 ViewGroup
      继承者 com.lingtu.mapapi.MapView
          
所有已实现的接口:
com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas<java.lang.Object>

public class  MapView extends ViewGroup implements com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas<java.lang.Object>

一个显示地图(数据源自lingtu地图服务)的视图,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图。它也可以被编程控制 getController(),在地图上面绘制一系列的Overlay( getOverlays())。

地图可被多种模式显示;参看 setSatellite(boolean)setTraffic(boolean), and setStreetView(boolean). 当不是触摸模式时,可以选则显示一个“十字线“帮助使用平移选择;参看setReticleDrawMode(com.autonavi.mapapi.MapView.ReticleDrawMode) .它也能在屏幕左下角绘制一个autonavi的徽标。

优先的缩放机制是内置的缩放机制,参看 setBuiltInZoomControls(boolean). 当用户平移地图时,缩放控件会自动的显示在MapView的底部。

MapView也是一个ViewGroup,使用LayoutParameters可以让你把views安放在指定的像素偏移点,或者安放在一个特定的经纬度位置。

一个MapView只能被一个 ,构造出来。 这是因为MapView依赖于方位后台网络和文件系统的线程;这些线程必须由MapActivity中生命中期管理来维护。 地图贴片被缓存在你自己应用程序目录的文件系统里。缓存是自动管理的,所以大可不需要你去做任何事情,你可以随意的删除它们。

为了在MapView中显示autonavi地图数据,你必须注册autonavi地图服务和获取一个地图API Key。

一旦你有一个Maps API Key,你需要从XMLlayout中MapView属性中一个特殊的属性里-- android:apiKey -- 引用它。 If you are instantiating a MapView directly from code, you should pass the Maps API Key in the MapView constructor.

 


字段摘要
static floatCRITICAL_SPEED 
           
 intdefaultScale 
           
static com.lingtu.lingtumap.map.GridMapLoadload 
           
 HandlermHandler 
           
 intmScrollX 
           
 intmScrollY 
           
static com.lingtu.lingtumap.map.Statestate 
           
构造方法摘要
MapView(Context context, AttributeSet attrs) 
           
MapView(Context context, java.lang.String apiKey) 
          下面是mapApi的方法
方法摘要
 booleancanCoverCenter() 
          检查当前是否有地图贴片覆盖地图中心。
 voidcomputeScroll() 
           
 voiddisplayZoomControls(boolean takeFocus) 
          显示缩放控件,可以选择是否请求焦点选中以便通过按键访问。
 com.lingtu.mapapi.MapView.LayoutParamsgenerateLayoutParams(android.util.AttributeSet attrs) 
           
 MapControllergetController() 
          返回地图的MapController,这个对象可用于控制和驱动平移和缩放。
 java.lang.ObjectgetDraggableObjectAtPoint
(com.lingtu.lingtumap.map.MultiTouchController.PointInfo pt)
 
          See if there is a draggable object at the current point.
 intgetLatitudeSpan() 
          当前纬线的跨度(从地图的上边缘到下边缘),十进制度×1,000,000。
 intgetLongitudeSpan() 
          当前经度的跨度(从地图的左边缘到地图的右边缘),
单位:十进制的度×1,000,000
 GeoPointgetMapCenter() 
          返回当前地图中心点位置,做为一个GeoPoint(经度、纬度)的对象。
 intgetMapViewScrollX() 
           
 intgetMapViewScrollY() 
           
 intgetMaxZoomLevel() 
          返回当前视图中心点的最大缩放级别。
 java.util.List<Overlay>getOverlays() 
          获取Overlay列表。
 voidgetPositionAndScale(java.lang.Object obj, com.lingtu.lingtumap.map.MultiTouchController.PositionAndScale 
objPosAndScaleOut)
 
          Get the screen coords of the dragged object's origin, and scale multiplier to convert screen coords to obj coords.
 ProjectiongetProjection() 
          获取屏幕像素坐标和经纬度对之间的转换。
 ScrollergetScroller() 
           
 android.view.ViewgetZoomControls() 
          已过时。 
 intgetZoomLevel() 
          返回当前地图的缩放级别。
 booleanisSatellite() 
          检查地图是否在“卫星”图像模式。
 booleanisStreetView() 
          检验地图是否正在绘制街道视图(蓝色轮廓)。
 booleanisTraffic() 
          检查地图是否正在出现的车辆。
 voidonFocusChanged(boolean hasFocus, int direction, Rect unused) 
          当这个视图的焦点状态变化时被视图系统调用。
 booleanonKeyDown(int keyCode, KeyEvent event) 
          首先把按键传送到overlay,如果overlay不处理它们,尝试使用它们去平移。
 booleanonKeyUp(int keyCode, android.view.KeyEvent event) 
          把这个事件首先传送到Overlay,如果得不到处理,尝试去平移。
 voidonRestoreInstanceState(android.os.Bundle state) 
          把MapView的状态恢复到一个Bundle。
 voidonSaveInstanceState(android.os.Bundle state) 
          把MapView的状态存储到一个Bundle中。
 voidonSizeChanged(int w, int h, int oldw, int oldh) 
          重新调整地图对象的尺寸和十字线的位置。
 booleanonTouchEvent(MotionEvent event) 
          首先把trackball事件传送到overlay,如果它不处理它们,就把事件再传送到手势探测器,然后分发探测到的手势。
 booleanonTrackballEvent(android.view.MotionEvent event) 
          把trackball事件首先传送到overlay,如果它们不处理消息,尝试取平移和“点击”。
 voidonWindowFocusChanged(boolean hasFocus) 
          当包含这个视图的窗口得到或是去焦点时被调用。
 voidpreLoad() 
          在当前的中心预装地图贴片。
 voidresetScroll() 
           
 voidscollBy(int x, int y) 
           
 voidscrollTo(int x, int y) 
           
 voidselectObject(java.lang.Object obj, com.lingtu.lingtumap.map.MultiTouchController.PointInfo pt) 
          Select an object at the given point.
 voidsetBuiltInZoomControls(boolean on) 
          设置是否启用内置的缩放控件。
 voidsetMultiTouchControls(boolean on) 
           
 booleansetPositionAndScale(java.lang.Object obj, com.lingtu.lingtumap.map.MultiTouchController.PositionAndScale
 aNewObjPosAndScale, com.lingtu.lingtumap.map.MultiTouchController.PointInfo aTouchPoint)
 
          Callback to update the position and scale (in object coords) of the currently-dragged object.
 voidsetReticleDrawMode(com.lingtu.mapapi.MapView.ReticleDrawMode mode)
          指定当终端不是在触摸模式时如何绘制十字线。
 voidsetSatellite(boolean on) 
          设置地图模式为“卫星”模式,装载带有道路名称的俯拍图像块。
 voidsetStreetView(boolean on) 
          控制街景是否显示在地图上。
 voidsetTraffic(boolean on) 
          控制是否在地图上显示车辆。
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息
state
public static com.lingtu.lingtumap.map.State state

defaultScale
public int defaultScale

load
public static com.lingtu.lingtumap.map.GridMapLoad load

CRITICAL_SPEED
public static final float CRITICAL_SPEED
另请参见:
常量字段值

mHandler
public final Handler mHandler

mScrollX
public int mScrollX

mScrollY
public int mScrollY
构造方法详细信息
MapView
public MapView(Context context,
               java.lang.String apiKey)
下面是mapApi的方法

 


MapView
public MapView(Context context,
               AttributeSet attrs)
方法详细信息
onSizeChanged
public void onSizeChanged(int w,
                          int h,
                          int oldw,
                          int oldh)
重新调整地图对象的尺寸和十字线的位置。如果覆盖该方法,一定要通过调用super.onSizeChanged()。

 


computeScroll
public void computeScroll()

onWindowFocusChanged
public void onWindowFocusChanged(boolean hasFocus)
当包含这个视图的窗口得到或是去焦点时被调用。 捕获焦点变化事件后终止平移(因为我们不可能在得到keyUP事件了)

 

另请参见:
android.view.View#onWindowFocusChanged(boolean)

onFocusChanged
public void onFocusChanged(boolean hasFocus,
                           int direction,
                           Rect unused)
当这个视图的焦点状态变化时被视图系统调用。捕获焦点变化事件,终止平移。(因为不可能再得到keyUp事件了)

 

另请参见:
android.view.View#onFocusChanged(boolean, int, android.graphics.Rect)

onKeyDown
public boolean onKeyDown(int keyCode,
                         KeyEvent event)
首先把按键传送到overlay,如果overlay不处理它们,尝试使用它们去平移。

Specified by:

接口android.view.KeyEvent.Callback中onKeyDown有详细说明。

 

另请参见:
android.view.View#onKeyDown(int, android.view.KeyEvent)

onKeyUp
public boolean onKeyUp(int keyCode,
                       android.view.KeyEvent event)
把这个事件首先传送到Overlay,如果得不到处理,尝试去平移。

Specified by:

android.View.KeyEvent.Callback接口中的onKeyUp有详细说明。

 

另请参见:
android.view.View#onKeyUp(int, android.view.KeyEvent)

onTrackballEvent
public boolean onTrackballEvent(android.view.MotionEvent event)
把trackball事件首先传送到overlay,如果它们不处理消息,尝试取平移和“点击”。

 

另请参见:
android.view.View#onTrackballEvent(android.view.MotionEvent)

onTouchEvent
public boolean onTouchEvent(MotionEvent event)
首先把trackball事件传送到overlay,如果它不处理它们,就把事件再传送到手势探测器,然后分发探测到的手势。 如果这个MapView没有被激活(View.isEnabled()) 或不是可点击的(View.isClickable()),那么将总是返回false。

 

另请参见:
android.view.View#onTouchEvent(android.view.MotionEvent)

generateLayoutParams
public com.lingtu.mapapi.MapView.LayoutParams generateLayoutParams(android.util.AttributeSet attrs)
另请参见:
android.view.ViewGroup#generateLayoutParams(android.util.AttributeSet)

displayZoomControls
public void displayZoomControls(boolean takeFocus)
显示缩放控件,可以选择是否请求焦点选中以便通过按键访问。

 

参数:
takeFocus - 如果为true,则焦点选中缩放控件。否则不对缩放控件聚焦。

canCoverCenter
public boolean canCoverCenter()
检查当前是否有地图贴片覆盖地图中心。

 

返回:
boolean 如果地图中心有一个地图贴片,返回true,否则返回false。

preLoad
public void preLoad()
在当前的中心预装地图贴片。这将启动图片传输。

 


getZoomLevel
public int getZoomLevel()
返回当前地图的缩放级别。在缩放级别1(完全最小),地球赤道是256像素长。每个后续的级别是前一级别的2倍。

 

返回:
int 地图的缩放级别。

setSatellite
public void setSatellite(boolean on)
设置地图模式为“卫星”模式,装载带有道路名称的俯拍图像块。注意当切换回地图模式时 (如果当前缩放对于地图模式太高,缩放应切换到地图缩放的最大值),这可能会改变缩放级别。

 

参数:
on - 如果为true,打开卫星贴图;否则,打开常规地图贴图。

isSatellite
public boolean isSatellite()
检查地图是否在“卫星”图像模式。

 

返回:
boolean 如果是卫星图像模式,返回true。否则返回false。

setTraffic
public void setTraffic(boolean on)
控制是否在地图上显示车辆。这个街景标识不兼容,所以如果需要应当使街景标识失效。 车辆可绘制在地图贴图上或卫星贴图上;但对于地图贴图是最优的。

 

参数:
on - 如果为true,打开交通线。否则关闭交通线。

isTraffic
public boolean isTraffic()
检查地图是否正在出现的车辆。

 

返回:
boolean 如果地图正在绘制车辆,返回true,否则返回false。

setStreetView
public void setStreetView(boolean on)
控制街景是否显示在地图上。这和交通标示不相容,所以如果必要,应该去掉交通标识。 街景可以在地图贴图上绘制,也可以在卫星贴图上绘制;但是,它们对地图贴图做了优化。

 

参数:
on - 如果为true,则打开街景开关。否则,关闭街景。

isStreetView
public boolean isStreetView()
检验地图是否正在绘制街道视图(蓝色轮廓)。

 

返回:
boolean 如果地图正在绘制街道视图,返回true;否则返回false。

getMapCenter
public GeoPoint getMapCenter()
返回当前地图中心点位置,做为一个GeoPoint(经度、纬度)的对象。

 

返回:
GeoPoint 地图中心点的GeoPoint对象。

getController
public MapController getController()
返回地图的MapController,这个对象可用于控制和驱动平移和缩放。

 

返回:
MapController 地图的MapController。

getOverlays
public final java.util.List<Overlay> getOverlays()
获取Overlay列表。这个列表中的任何一个 Overlay都将被绘制(以升序方式), 都能收到事件(以降序方式,直到返回true)。 如果你修改了这个列表,你可能得去调用View.postInvalidate(),让你这个改动对用户可见。

 

返回:
List Overlay列表。这通过运行Collections.synchronizedList(java.util.List); 因此只要你觉得合适,你随时可访问这个列表或者修改它。你做出的修改将反应在下一次绘制或事件上。 然而,如果你在列表上循环操作,那么整个循环应当在列表的一个块同步中完成。

getLatitudeSpan
public int getLatitudeSpan()
当前纬线的跨度(从地图的上边缘到下边缘),十进制度×1,000,000。

 

返回:
int 纬线跨度,十进制×1,000,000

getLongitudeSpan
public int getLongitudeSpan()
当前经度的跨度(从地图的左边缘到地图的右边缘),单位:十进制的度×1,000,000

 

返回:
int 经线的跨度,十进制度×1,000,000

setReticleDrawMode
public void setReticleDrawMode(com.lingtu.mapapi.MapView.ReticleDrawMode mode)
指定当终端不是在触摸模式时如何绘制十字线。

 

参数:
mode - 十字线的绘制模式。

有效值有:

MapView.ReticleDrawMode.DRAW_RETICLE_OVER -默认值。 这种模式下,十字线绘制在所有Overlay的上方,总是可见。

MapView.ReticleDrawMode.DRAW_RETICLE_UNDER - 在所有Overlay绘制之前绘制十字线,这意味着在十字线的位置上的其它任何对象都将覆盖十字线。

MapView.ReticleDrawMode.DRAW_RETICLE_NEVER - 不绘制十字线。


getMaxZoomLevel
public int getMaxZoomLevel()
返回当前视图中心点的最大缩放级别。(并非所有的地区区域都提供同样的高解析度,完整的地图贴片。)要考虑到卫星模式是否启用。

 

返回:
int 地图当前的中心的最大缩放级别。

onSaveInstanceState
public void onSaveInstanceState(android.os.Bundle state)
把MapView的状态存储到一个Bundle中。当前,此函数只存储缩放窗口的中心、缩放级别、和缩放窗口的状态。

 

参数:
state - 保存当前状态的Bundle

onRestoreInstanceState
public void onRestoreInstanceState(android.os.Bundle state)
把MapView的状态恢复到一个Bundle。当前,这个函数只恢复缩放窗口的中心、缩放级别、和状态。

 

参数:
state - 带有前实例状态的Bundle

getZoomControls
@Deprecated
public android.view.View getZoomControls()
已过时。 

 


setBuiltInZoomControls
public void setBuiltInZoomControls(boolean on)
设置是否启用内置的缩放控件。如果启用,MapView将自动显示这些缩放控件。

 

参数:
on - 内置的缩放控件是否启用。如果是false,用户处理缩放控件在界面上的显示。

getProjection
public Projection getProjection()
获取屏幕像素坐标和经纬度对之间的转换。

 

返回:
Projection 地图在当前状态的投影转换。用户不应该把这个对象用于其它绘制,因为地图的投影转换是变化的。

scollBy
public void scollBy(int x,
                    int y)

scrollTo
public void scrollTo(int x,
                     int y)

getMapViewScrollX
public int getMapViewScrollX()

getMapViewScrollY
public int getMapViewScrollY()

resetScroll
public void resetScroll()

setMultiTouchControls
public void setMultiTouchControls(boolean on)

getDraggableObjectAtPoint
public java.lang.Object getDraggableObjectAtPoint (com.lingtu.lingtumap.map.MultiTouchController.PointInfo pt)
从接口 com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas 复制的描述
See if there is a draggable object at the current point. Returns the object at the point, or null if 
nothing to drag. To start a multitouch drag/stretch operation, this routine must return some non-null reference to 
an object. This object is passed into the other methods in this interface when they are called.

 

指定者:
接口  com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas<java.lang.Object> 
中的  getDraggableObjectAtPoint
参数:
pt - The point being tested (in object coordinates). Return the topmost object under this 
point, or if dragging/stretching the whole canvas, just return a reference to the canvas.
返回:
a reference to the object under the point being tested, or null to cancel the drag operation. 
If dragging/stretching the whole canvas (e.g. in a photo viewer), always return non-null, otherwise the stretch operation won't work.

getPositionAndScale
public void getPositionAndScale(java.lang.Object obj,
                                com.lingtu.lingtumap.map.MultiTouchController.PositionAndScale objPosAndScaleOut)
从接口 com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas 复制的描述
Get the screen coords of the dragged object's origin, and scale multiplier to convert screen coords to obj coords. The job of this routine is to call the .set() method on the passed PositionAndScale object to record the initial position and scale of the object (in object coordinates) before any dragging/stretching takes place.

 

指定者:
接口  com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas<java.lang.Object>
中的  getPositionAndScale
参数:
obj - The object being dragged/stretched.
objPosAndScaleOut - Output parameter: You need to call objPosAndScaleOut.set() to record the current position and scale of obj.

selectObject
public void selectObject(java.lang.Object obj,
                         com.lingtu.lingtumap.map.MultiTouchController.PointInfo pt)
从接口 com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas 复制的描述
Select an object at the given point. Can be used to bring the object to top etc. Only called when first touchpoint goes down, not when multitouch is initiated. Also called with null on touch-up.

 

指定者:
接口  com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas<java.lang.Object> 中的 selectObject
参数:
obj - The object being selected by single-touch, or null on touch-up.
pt - The current touch point.

setPositionAndScale
public boolean setPositionAndScale(java.lang.Object obj,
                                   com.lingtu.lingtumap.map.MultiTouchController.PositionAndScale 
                                aNewObjPosAndScale,com.lingtu.lingtumap.map.MultiTouchController.
                                PointInfo aTouchPoint)
从接口 com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas 复制的描述
Callback to update the position and scale (in object coords) of the currently-dragged object.

 

指定者:
接口  com.lingtu.lingtumap.map.MultiTouchController.MultiTouchObjectCanvas<java.lang.Object> 中的 setPositionAndScale
参数:
obj - The object being dragged/stretched.
aNewObjPosAndScale - The new position and scale of the object, in object coordinates. Use this to move/resize the object before returning.
aTouchPoint - Info about the current touch point, including multitouch information and utilities to calculate and cache multitouch pinch diameter etc. (Note: touchPoint is volatile, if you want to keep any fields of touchPoint, you must copy them before the method body exits.)
返回:
true if setting the position and scale of the object was successful, or false if the position or scale parameters are out of range for this object.

getScroller
public Scroller getScroller()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值