当前位置:操作系统 > 安卓/Android >>

高德地图Android API 长按地图显示地址信息 示例

 长按地图某点显示位置信息开发步骤
本文主要介绍Android 手势操作长按地图某点显示该点地理位置信息的功能。通过构造一个locationSelectOverlay类来定义该功能,在地图上对长按手势进行监听,一旦有这个事件发生就调用getAddressFromServer()方法来显示地址信息。

步骤如下:

(1)       右键点击工程,在Build Path>Configure Build Path…>libraries 中选择“Add Externel JARs…”,选定MapApi.jar,点击OK,这样就可以将高德地图Android API 库文件引入。

(2)       在工程的AndroidManifest.xml 中设置网络相关权限。

 

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

 

(3)       在工程的res/layout 文件夹下新建页面布局文件。此处需要的文件为activity_long_press_map.xml,geocoder.xml和drawable 文件夹显示提示框背景。

 geocoder.xml 设置地图显示布局,显示id为geocode_MapView的地图视图。

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    <com.amap.mapapi.map.MapView android:id="@+id/geocode_MapView"

           android:layout_width="fill_parent" android:layout_height="fill_parent"

           android:clickable="true" >

    </com.amap.mapapi.map.MapView>

</LinearLayout>

 

  activity_long_press_map.xml 设置弹出框的背景图片和文字布局。

<?xml version="1.0" encoding="UTF-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/GeoLinearLayoutPopup"

    android:layout_width="wrap_content"

android:layout_height="wrap_content"

//设置背景为drawable文件夹下的tip_pointer_button.xml文件

    android:background="@drawable/tip_pointer_button"

    android:baselineAligned="_baseline"

    android:clickable="true"

    android:focusable="true"

    android:orientation="horizontal" >

     //文本框id为GeoName

     <LinearLayout android:layout_gravity="center_vertical"

           android:orientation="vertical" android:id="@+id/LinearLayoutPoi"

           android:paddingLeft="5.0dip" android:paddingRight="5.0dip"

           android:layout_width="wrap_content" android:layout_height="wrap_content">

           <TextView android:textSize="16.0sp" android:textColor="#ff000000"

                  android:id="@+id/GeoName" android:layout_width="wrap_content"

                  android:layout_height="wrap_content" android:text=""

                  android:singleLine="true" />

    </LinearLayout>

</LinearLayout>

 

  drawable 文件夹

此文件夹是显示提示框的背景布局文件和背景图片文件。

显示效果图如下所示:


 

长按地图显示效果

 

(4)       在该工程中分别定义4个类longPressMap.java,locationSelectOverlay.java,popUpPanel.java,Constants.java。

l  longPressMap.java 为显示一个地图类,通过实例化一个locationSelectOverlay类实现长按地图显示地理位置信息功能。

LongPressMap类示例代码如下:

//longPressMap 类继承MapActivity对mapview资源进行管理

public class longPressMap extends MapActivity {

 

    private MapView mMapView;

    locationSelectOverlay mSelectLay;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

 //使用setContentView方法调用R.layout.activity_regeocoder布局文件,显示地图

           setContentView(R.layout.geocoder);

 //获取地图视图的id,赋值给mMapView

           mMapView = ((MapView) findViewById(R.id.geocode_MapView));

// 设置启用内置的缩放控件

           mMapView.setBuiltInZoomControls(true);

   //实例化一个locationSelectOverlay类

    mSelectLay = new locationSelectOverlay(this, mMapView, new popUpPanel(this, mMapView));

   //将该功能加载到此地图上,启用长按地图显示该点地址信息的功能

    mMapView.getOverlays().add(mSelectLay);

    }    

}

 

locationSelectOverlay类示例代码如下:

 

//locationSelectOverlay类继承Overlay接口,实现OnGestureListener手势监听

public class locationSelectOverlay extends Overlay implements OnGestureListener {

public popUpPanel mTipPanel;    //声明一个弹出框对象

    GeoPoint mSelectPoint;          //声明一个地理坐标点对象

    MapView mMapView;            //声明一个地图视图对象

    Context mContext;               //活动对象

    TextView mTipText=null;         //声明一个文本对象

    private static String nearbystr="";

    private GestureDetector gestureScanner; //声明一个手势监听对象

    private  Geocoder coder;           //声明一个逆地理编码对象

    private String addressName="";       //声明一个地址名称字符串

 

//长按地图某点获取信息的构造函数。

    public l

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,