今天给大家带来一个百度地图的综合案例,主要是仿百度外卖地址添加功能,主要涉及到的功能有以下几点:
- 百度地图状态改变监听,用户拖动地图可以实时展示周围的poi信息
- 打开页面定位用户的位置
- poi搜索,根据用户搜索的关键字显示poi信息
- 在地图设置配送范围
- 判断拖动的位置与搜索的地址是否在配送范围内,并给出友好提示
效果图
集成百度地图api
使用百度地图api需要申请密钥,如下网址有详细操作步奏
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key
配置环境,导入jar包,参考如下网址(jar导入也可直接文章最后demo)
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/buildproject
主页面布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fitsSystemWindows="true"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/rl_search"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/bg_feedback" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_centerInParent="true"
android:layout_marginLeft="6dp"
android:layout_marginRight="12dp"
android:layout_marginTop="6dp"
android:layout_toRightOf="@+id/iv_left"
android:background="@color/bg_mine" >
<ImageView
android:id="@+id/iv_search"
android:layout_width="26dp"
android:layout_height="26dp"
android:layout_centerVertical="true"
android:layout_marginLeft="6dp"
android:paddingRight="6dp" />
<EditText
android:id="@+id/et_search"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/iv_search"
android:background="@color/bg_mine"
android:gravity="center_vertical"
android:hint="查找小区,大厦,学校"
android:paddingLeft="2dp"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="14sp" />
</RelativeLayout>
<ImageView
android:id="@+id/iv_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="6dp"
android:padding="14dp"
android:src="@drawable/arrow_left" />
</RelativeLayout>
<LinearLayout
android:id="@+id/ll_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fitsSystemWindows="true"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="280dp"
android:orientation="vertical"
android:visibility="visible" >
<com.baidu.mapapi.map.MapView
android:id="@+id/map"