显示高德地图

1..Framlayout帧布局

直接在屏幕上开辟出一块空白区域,添加的所有组件都放置在区域左上角。

大小由最大子控件决定。

前景图像:永远处于帧布局最顶的,直接面对用户的图像(不会被覆盖的图片)

android:foreground:设置该帧布局容器的前景图像

android:foregroundGravity:设置前景图像显示的位置

自定义view时,view已完成所有逻辑,则只需一个容器将其装入就好

关键的是layout_gravity,负责控制控件的位置。

2.com.amap.api.maps2d.AMap

Com.amap.api.maps2d为地图显示包

类 MapView

  • java.lang.Object
    • FrameLayout
      • com.amap.api.maps2d.MapView

public class MapView extends FrameLayout

一个显示地图的视图(View)。它负责从服务端获取地图数据。当屏幕焦点在这个视图上时,它将会捕捉键盘事件(如果手机配有实体键盘)及屏幕触控手势事件。 使用这个类必须按照它的生命周期进行操控,你必须参照以下方法onCreate(Bundle)、 onResume()、onPause()、onDestroy()、onSaveInstanceState(Bundle)。 当MapView初始化完成后,用户可以通过getMap()方法获得一个AMap 对象。如果MapView 没有初始成功,则执行getMap()将返回null。

方法:public AMap getMap()

返回一个与这个视图(view)相关联的AMap对象

如果没有成功初始化,则调用此方法会返回Null

amap = mapview.getMap();

接口AMap.InfoWindowAdapter(可个性定制信息窗口视图)

Public static interface AMap.InfoWindowAdapter

提供了一个可个性化定制的信息窗口视图的类。这个类提供的方法是当一个信息窗口显示时回调的方法。

无论是用户手势调用显示信息窗口或一个程序调用方法显示都会触发回调。当你构造一个信息窗口时,这个类的方法将会按默认的顺序调用(先Windows后Contents)。

View getInfoWindow(Marker marker)弹出的信息窗口的marker对象

提供了一个个性化定制信息窗口的marker 对象。如果这个方法返回一个view,则它会被用来当对整个信息窗口。如果你在调用这个方法之后修改了信息窗口的view对象 ,那么这些改变不一定会起作用 (所以注意应将信息窗口view设置好)。如果这个方法返回null,则将会使用默认的信息窗口风格,内容将会从getInfoContents(Marker)方法获取。

View getInfoContents(Marker marker)

提供了一个给默认信息窗口定制内容的方法。这个方法只有在getInfoWindow(Marker)返回null 时才会被调用。如果这个方法返回一个view ,它将替代现有的默认的信息窗口,如果你在调用这个方法之后修改了view,则这些改变将不一定会呈现在信息窗口上 。如果这个方法返回null,将使用默认的方式渲染信息窗口。

类 LatLng(存储经纬度坐标值的类,单位角度)

public final class LatLng

extends java.lang.Object

implements java.lang.Cloneable

LatLng(double latitude垂直纬度, double longitude水平经度)

使用传入的经纬度构造LatLng 对象,一对经纬度值代表地球上一个地点

标注(Marker地图覆盖物之一)

Marker 是在地图上的一个点绘制图标。这个图标和屏幕朝向一致,和地图朝向无关。一个marker有如下属性:

 锚点:图标摆放在地图上的基准点。默认情况下,锚点是从图片下沿的中间处。 

 位置:marker是通过经纬度的值来标注在地图上的。

 标题:当点击Marker 显示在信息窗口的文字,随时可以更改。

 片段:除了标题外其他的文字,随时可以更改。

 图标:Marker 显示的图标。如果未设置图标,API 将使用默认的图标,高德为默认图标提供了10 种颜色备选。默认情况下,Marker 是可见的。你们随时更改marker 的可见性。

方法:

public void setPosition(LatLng latlng)

设置marker 的经纬度位置。

public void setObject(java.lang.Object object)

设置Marker的附加对象。用户可以自定义Marker的属性。

public void setTitle(java.lang.String title)

设置marker 的标题。

public void setIcon(BitmapDescriptor icon)

设置当前marker的图标

public void showInfoWindow()

显示当前marker 的信息窗口。地图上只能同时显示一个InfoWindow,当有多个Marker时,调用这个方法,其他的marker的infowindow将会隐藏

public void setVisible(boolean visible)

设置marker 的可见属性。如果当前marker的信息窗口处于显示状态,设置marker 的可见属性为false 时,信息窗口也会同时为不可见。

目标:

在地图的中心点处添加Marker

实现Marker的点击事件响应

实现Marker的添加和灵活删除

类 BitmapDescriptor(com.amap.api.maps2d.model)

在高德地图API里,如果需要将一张图片绘制为Marker,需要用这个类把图片包装成对象,可以

通过BitmapDescriptorFactory获得一个对象

类 BitmapDescriptorFactory

创建BitmapDescriptor对象

字段

HUE_AZURE 天蓝色

HUE_BLUE 蓝色

HUE_RED 红色

方法

defaultMarker() 创建默认的marker图标BitmapDescriptor对象

public static BitmapDescriptor defaultMarker(float hue) API提供了10个颜色的Marker

图标,用户可以通过此方法传入值来调用

fromBitmap(Bitmap image) 根据传入的Bitmap对象创建BitmapDescriptor对象

fromResource(int resourceId) 根据传入的图片文件的资源id,创建

BitMapDescriptor对象

3.回调(回调函数callback)

API(应用编程接口):系统程序员写的库留下的接口,应用编程利用写好的各种库来编写具某种功用的程序。

时常通过API调用库里预先备好的函数,但有时要求应用先传入一个函数,在合适的时候调用,以完成目标任务。

回调函数:被传入的,后又被调用的函数

库函数提供功能,应用决定功能各种方式,将回调函数传入库函数的动作,称为登记回调函数。

4.com.amap.api.location

类AMapLocation

定位信息类。定位完成后的位置信息。

字段

static int LOCATION_TYPE_GPS GPS定位结果,通过设备GPS定位模块返回的定位结果!!

方法

java.lang.String getAddress() 获取地址

java.lang.String getAdCode(0获取区域编码

java.lang.String getCityCode()获取城市编码!

double getLongitude()获得经度 double getLatitude()获得维度

java.lang.String getLocationDetail() 获取定位信息描述 getLocationType()定位信息来源

java.lang.String toStr()将定位结果转换成字符串··

AMapLocationClient

定位服务类,提供单次定位,持续定位,最后位置相关功能

void startLocation()开始定位

void startAssistantLocation()启动辅助定位,用于辅助H5页面定位

void stopAssistantLocation()停止辅助定位

AMapLocation getLastKnownLocation()获取最后位置

void setLocationListener(AMapLocationListener listener)设置定位回调监听
void setLocationOption(AMapLocationClientOption option)设置定位参数

类 AMapLocationClientOption

定位参数设置,通过这个类可以对定位的相关参数进行设置

方法

getLocationMode() :获取定位模式 默认值:Hight_Accuracy 高精度模式

setLocationMode(AMapLocationClientOption.AMapLocationMode locationMode) 设置定位模式

setOnceLocation(boolean isOnceLocation) 设置是否单次定位 默认值:false

public AMapLocationClientOption setNeedAddress(boolean isNeedAddress)

设置是否返回地址信息,默认返回地址信息 

默认值:true, 返回地址信息

接口 AMapLocationListener 定位回调接口

void onLocationChanged(AMapLocation location)

定位回调监听,当定位完成后调用此方法

类 CameraUpdate

定义了一个可视区域的移动。这个类对象在用户改变可视区域的时候被调用。如moveCamera(CameraUpdate)。使用CameraUpdateFactory 类可以构造CameraUpdate 对象。

类 CameraUpdateFactory

这是类是创建CameraUpdate对象的工厂类。

public static CameraUpdate zoomTo(float zoom)

返回一个包含缩放级别改变的CameraUpdate 对象。缩放级别将改变为转入的参数值。

参数:

zoom – 描述了一个缩放级别。高德地图的缩放级别是在3-19 之间。

public static CameraUpdate changeLatLng(LatLng latLng)

返回一个CameraUpdate对象,只改变地图可视区域中心点,地图缩放级别不变。

参数:

latLng – 地图可视区域中心点坐标(定位中心点)

5.com.amap.api.services.route.RouteSearch

类 RouteSearch

该类路径规划搜索的入口,定义此类开始路径规划搜索

嵌套类

static class RouteSearch.FromAndTo

构造路径规划的起点和终点坐标

static class RouteSearch.DriveRouteQuery

驾车路径查询规划

java.lang.String getPassedPointStr() 将途径点位置坐标转换为字符串输出。

int getMode() 返回计算路径的模式

public  RouteSearch.FromAndTo getFromAndTo() 返回查询路径的起终点。

public DriveRouteQuery(RouteSearch.FromAndTo fromAndTo, int mode, java.util.List<LatLonPoint> passedByPoints, java.util.List<java.util.List<LatLonPoint>> avoidpolygons, java.lang.String avoidRoad)

DriveRouteQuery构造函数。

参数:

fromAndTo – 路径的起点终点。

mode – 计算路径的模式。可选,默认为速度优先 RouteSearch.DrivingDefault

passedByPoints – 途经点,可选。最多支持16个途经点。

avoidpolygons – 避让区域,可选。区域避让,支持32个避让区域,每个区域最多可有16个顶

点。如果是四边形则有4个坐标点,如果是五边形则有5个坐标点。同时传入避让区域及避让道

路,仅支持避 让道路。avoidRoad – 避让道路名称,可选。目前只支持一条避让道路。

static interface RouteSearch.OnRouteSearchListener

为路径搜索结果的异步处理回调接口

字段

static int BUS_COMFORTABLE 最舒适

BUS_DEFAULT 最快捷模式

BUS_SAVE_MONEY最经济模式

DRIVING_MULTI_CHOICE_AVOID_CONGESTION躲避拥堵(考虑路况)

方法

DriveRouteResult calculateDriveRoute(RouteSearch.DriveRouteQuery driveQuery) 根据指

定的参数来计算驾车路径

void calculateDriveRouteAsyn(RouteSearch.DriveRouteQuery driveQuery) 异步处理

setRouteSearchListener(RouteSearch.OnRouteSearchListener listener)路径搜索结果监听接

口设置

6.自定义SimpleAdapter

可以指定由Map组成的List类型的数据,在每个条目对应的List的一行。Maps包含每一行数据

构造函数

public SimpleAdapter(Context context, List<? extends Map<String , ?>> data,int

resource,String[] from,String[] to)

参数

context SimpleAdapter关联的View的运行环境

data 一个Map组成的List。在列表中的每个条目对应列表中的一行,每一个map中应该

包含所有在from参数中指定的键

resource 一个定义列表项的布局文件的资源ID。布局文件至少包含to中定义的ID

from 一个将被添加到Map映射上的键名(键名不可重复,但是可以有不同的值)

to 将绑定数据的视图ID,跟from参数对应,这些应该全是TextView

7.利用webview装载html5页面(跨平台)

MainActivity.java修改oncreate函数

//打开链接

private WebView webview;

@Override

protected void onCreate(Bundle saveInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//实例化WebView对象

webview = new WebView(this);

//设置WebView属性,能够执行JavaScript脚本

webview.getSettings.setJavaScriptEnabled(true);

//窗口弹出

webview.setWebChromeClient(new WebChromeClient());

//在当前页面打开连接

webview.setWebViewClient(new WebViewClient()

{

public boolean shouldOverrideUrlLoading(WebView view,String url)

{

view.loadUrl(url);

return true;

}

});

try{

//设置打开的页面地址(本地页面地址):新建assets目录,用于存放html页面,右键

//app->new->folder->assetsfolder

webview.loadUrl(fill://android_asset/index.html);

}catch(Exception ex){

ex.printStackTrace();

}

setContentView(webview);

}

//回退问题

@Override

public boolean onKeyDown(int keyCoder,KeyEvent event)

{

//页面内回退

if((keyCoder==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){

webview.goBack();

return true;

}

return super.onKeyDown(keyCoder,event);

}

去掉menu

右上角有三个点的按钮,点击后有个默认的setting按钮,对我们装载html页面来说这个menu是没什么用的,那么我们现在就把这个menu处理掉。处理方法可以完全删除也可以先去掉setting,以后想添加的时候可以方便添加,为了方便以后添加,这里只是把这个setting去掉,menu相关的文件还保留。

menu_main.xml文件中把item项删除掉

基于高德地图SDK开发之地图显式-编程知识网

现在编译会报错,还需要把mainactivity.java中的响应按钮的代码注释掉

基于高德地图SDK开发之地图显式-编程知识网

setWebViewClient()方法

1.实现对网页中超链接的拦截,shouldOverrideUrlLoading(WebView view,String url)

默认return false,继续加载这个url

2.加载网页时替换某个资源,调用shouldInterceptRequest方法,

public WebResourceResponse shouldInterceptRequest (WebView view,

WebResourceRequest request)  WebResourceRequest 将能够获取更多的信

息,提供了getUrl(),getMethod,getRequestHeaders等方法。

3.setWebChromeClient

WebChromeClient主要用来辅助WebView处理javascript的对话框,网站图标,网站标

题以及网页加载进度

4.GoBack()

返回上一浏览页面,通过重写onKeyDown方法实现点击返回键返回上一浏览页面而非

退出程序

8.路线规划

//在RouteSearch.OnRouteSearchListener接口回调方法void onDriveRouteSearched(DriveRouteResult result,int rCode)处理驾车规划路径结果。返回的信息包括:路线的距离,高速费用,路况情况

类 DrivePath 定义了驾车路径规划的一个方案

  • com.amap.api.services.route.Path
    • com.amap.api.services.route.DrivePath

方法

int getRestriction() 返回驾车规划方案的限行结果

java.util.List<DriveStep> getSteps()返回驾车规划方案的路段列表

java.lang.String getStrategy() 返回导航策略,显示中文

类 RouteSearch.DriveRouteQuery 此类定义了驾车路径查询规划。

方法

public java.util.List<LatLonPoint> getPassedByPoints() 返回设定查询的途经点。

public java.lang.String getPassedPointStr() 将途径点位置坐标转换为字符串输出。

public java.util.List<java.util.List<LatLonPoint>> getAvoidpolygons() 返回设定查询的避让

区域。

public java.lang.String getAvoidpolygonsStr() 将避让区域转换为字符串输出。

public DriveRouteQuery(Parcel source) 序列化实现

类 TMC 交通信息类

public int getDistance() 返回路况距离。

public java.lang.String getStatus() 返回路况。

public java.util.List<LatLonPoint> getPolyline() 获取本段路况的坐标点集合。

类 DriveStep

定义了驾车路径规划的一个路段。

public java.lang.String getRoad() 返回驾车路段的道路名称。

public float getDistance() 返回驾车路段的距离,单位米

public java.util.List<LatLonPoint> getPolyline() 返回驾车路段的坐标点集合。

public java.util.List<RouteSearchCity> getRouteSearchCityList() 得到搜索返回的路径规划途

径城市和行政区。

public java.util.List<TMC> getTMCs() 获取搜索返回的路径规划交通拥堵信息。

类 DriveRouteResult

public java.util.List<DrivePath> getPaths() 返回驾车路径规划方案

类 District

public java.lang.String getDistrictName() 得到行政区的名称