地图是由多个图层组成,每一个图层会显示一部分的地理或交通讯息。开发者能够经过设置 AMap 类,灵活控制图层的显示状态。例如,用户所看到包括街道、兴趣点、学校、公园等内容的地图展示就是一个图层。实时路况等的展示也是经过图层来实现的。java
2D地图SDK提供两种地图类型:MAP_TYPE_NORMAL 和 MAP_TYPE_SATELLITE。android
3D地图SDK提供三种地图类型:MAP_TYPE_NORMAL 、 MAP_TYPE_SATELLITE 和 MAP_TYPE_NIGHT。web
MAP_TYPE_NORMAL:标准地图。地图包含道路、建筑,以及重要的天然风光(如河流)等。道路和功能标签为可见的。api
MAP_TYPE_SATELLITE:卫星地图。3D地图道路和功能标签为可见的,2D地图道路和功能标签不可见。app
MAP_TYPE_NIGHT:夜景地图(仅3D地图)。道路和功能标签可见。ide
layers_activity.xml代码以下:this
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignTop="@id/map" android:background="#D000" android:minWidth="130dip" android:orientation="vertical" android:padding="6dp" > <Spinner android:id="@+id/layers_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" /> <CheckBox android:id="@+id/traffic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/traffic" /> </LinearLayout> </RelativeLayout>
LayersActivity.Activity代码以下:spa
/** * 基础地图——高德地图中介绍基本图层的使用 * @author jiatao * @date 2015-4-29 * @version 1.0 */ package com.jt1024.mapgd; import com.amap.api.maps.AMap; import com.amap.api.maps.MapView; import com.amap.api.maps.model.MyTrafficStyle; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.Spinner; public class LayersActivity extends Activity implements OnItemSelectedListener,OnClickListener{ private MapView mapView; private AMap aMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layers_activity); mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState); init(); } /** * 初始化AMap对象 */ private void init(){ if(aMap == null){ aMap = mapView.getMap(); } //是否显示交通情况的复选框及其监听器 CheckBox traffic = (CheckBox) findViewById(R.id.traffic); traffic.setOnClickListener(this); //选择矢量地图/卫星地图/夜景地图的下拉框及其适配器、监听器 Spinner spinner = (Spinner) findViewById(R.id.layers_spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.layers_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); /** * MyTrafficStyle 在地图上添加自定义拥堵畅通颜色的实时交通图层。 * 默认实时交通的颜色为畅通(#00a209)、缓慢(#ff7508)、拥堵(#ea0312)、极度拥堵(#92000a)。 * 目前可根据喜爱自定义其颜色。 */ MyTrafficStyle myTrafficStyle = new MyTrafficStyle(); /** * public void setSeriousCongestedColor(int seriousCongestedColor) * 设置行驶严重拥堵路段的标记颜色。 * 参数:seriousCongestedColor - 颜色值。 */ myTrafficStyle.setSeriousCongestedColor(0xff92000a); /** * public void setCongestedColor(int congestedColor) * 设置行驶拥堵路段的标记颜色。 * 参数:congestedColor - 颜色值。 */ myTrafficStyle.setCongestedColor(0xffea0312); /** * public void setSlowColor(int slowColor) * 设置行驶缓慢路段的标记颜色。 * 参数:slowColor - 颜色值。 */ myTrafficStyle.setSlowColor(0xffff7508); /** * public void setSmoothColor(int smoothColor) * 设置行驶畅通路段的标记颜色。 * 参数:smoothColor - 颜色值。 */ myTrafficStyle.setSmoothColor(0xff00a209); aMap.setMyTrafficStyle(myTrafficStyle); } /** * 方法必须重写 */ @Override protected void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { super.onPause(); mapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } /** * 对选择是否显示交通情况事件的响应 */ @Override public void onClick(View v) { // TODO Auto-generated method stub if (v.getId() == R.id.traffic) { /** * public final boolean isTrafficEnabled() * 返回当前地图是否有实时交通数据。 * 返回:若是返回true 则说明当前地图有实时交通数据,不然返回false。 * * public void setTrafficEnabled(boolean enabled) * 设置是否显示交通。默认不显示。 * 参数:enabled - true 表示显示,false 表示不显示。 * 抛出:RemoteException */ aMap.setTrafficEnabled(((CheckBox) v).isChecked());// 显示实时交通情况 } } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub if (aMap != null) { setLayer((String) parent.getItemAtPosition(position)); } } /** * 选择矢量地图/卫星地图/夜景地图事件的响应 */ private void setLayer(String layerName) { if (layerName.equals(getString(R.string.normal))) { aMap.setMapType(AMap.MAP_TYPE_NORMAL);// 矢量地图模式 } else if (layerName.equals(getString(R.string.satellite))) { aMap.setMapType(AMap.MAP_TYPE_SATELLITE);// 卫星地图模式 } else if (layerName.equals(getString(R.string.night_mode))) { aMap.setMapType(AMap.MAP_TYPE_NIGHT);// 夜景地图模式 } } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }