百度地图可视化定位效果,可以输入目的地定位。

登录百度开发者帐号后下载sdk导入自己的工程中。

代码如下:

  1 package com.lixu.baidu_gps;
  2
  3 import com.baidu.location.BDLocation;
  4 import com.baidu.location.BDLocationListener;
  5 import com.baidu.location.LocationClient;
  6 import com.baidu.location.LocationClientOption;
  7 import com.baidu.mapapi.SDKInitializer;
  8 import com.baidu.mapapi.map.BaiduMap;
  9 import com.baidu.mapapi.map.MapStatusUpdate;
 10 import com.baidu.mapapi.map.MapStatusUpdateFactory;
 11 import com.baidu.mapapi.map.MapView;
 12 import com.baidu.mapapi.map.MyLocationData;
 13 import com.baidu.mapapi.model.LatLng;
 14 import com.baidu.mapapi.search.geocode.GeoCodeOption;
 15 import com.baidu.mapapi.search.geocode.GeoCodeResult;
 16 import com.baidu.mapapi.search.geocode.GeoCoder;
 17 import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
 18 import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
 19 import android.app.Activity;
 20 import android.os.Bundle;
 21 import android.view.View;
 22 import android.view.View.OnClickListener;
 23 import android.widget.Button;
 24 import android.widget.EditText;
 25 import android.widget.Toast;
 26
 27 public class MainActivity extends Activity {
 28     private LocationClient mLocationClient = null;
 29     private BaiduMap mBaiduMap = null;
 30     private GeoCoder geocoder;
 31     private EditText et1, et2;
 32
 33     @Override
 34     protected void onCreate(Bundle savedInstanceState) {
 35         super.onCreate(savedInstanceState);
 36
 37         SDKInitializer.initialize(getApplicationContext());
 38
 39         setContentView(R.layout.activity_main);
 40
 41         mLocationClient = new LocationClient(this);
 42         // 获取百度地图的视图控件
 43         MapView baidumapview = (MapView) findViewById(R.id.baidumv);
 44
 45         mBaiduMap = baidumapview.getMap();
 46         // 设置地图指针
 47         mBaiduMap.setMyLocationEnabled(true);
 48
 49         // 处理百度地图开源项目的定位偏差
 50         LocationClientOption option = new LocationClientOption();
 51         option.setCoorType("bd09ll");
 52
 53         mLocationClient.setLocOption(option);
 54
 55         MyLocationListenner myListenner = new MyLocationListenner();
 56         mLocationClient.registerLocationListener(myListenner);
 57         mLocationClient.start();
 58
 59         geocoder = GeoCoder.newInstance();
 60
 61         geocoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
 62
 63             @Override
 64             public void onGetReverseGeoCodeResult(ReverseGeoCodeResult location) {
 65             }
 66
 67             @Override
 68             public void onGetGeoCodeResult(GeoCodeResult location) {
 69                 // 根据输入地址来获得经纬度
 70                 LatLng ll = location.getLocation();
 71                 // 获取精度纬度完成定位
 72                 MyLocationData mMyLocationData = new MyLocationData.Builder().latitude(ll.latitude)
 73                         .longitude(ll.longitude).build();
 74
 75                 // 设置定位球的位置
 76                 mBaiduMap.setMyLocationData(mMyLocationData);
 77                 // 移动定位球到中心位置
 78
 79                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
 80                 mBaiduMap.animateMapStatus(msu);
 81
 82             }
 83         });
 84
 85         et1 = (EditText) findViewById(R.id.et1);
 86
 87         et2 = (EditText) findViewById(R.id.et2);
 88
 89         Button btn = (Button) findViewById(R.id.sousuo);
 90
 91         btn.setOnClickListener(new OnClickListener() {
 92
 93             @Override
 94             public void onClick(View v) {
 95                 if (et1.getText().toString().equals("") || et2.getText().toString().equals("")) {
 96                     Toast.makeText(getApplicationContext(), "请输入地址", 0).show();
 97                 } else
 98                     geocoder.geocode(
 99                             new GeoCodeOption().city(et1.getText().toString()).address(et2.getText().toString()));
100
101             }
102         });
103
104     }
105
106     private class MyLocationListenner implements BDLocationListener {
107
108         @Override
109         public void onReceiveLocation(BDLocation location) {
110             // 获取精度纬度完成定位
111             MyLocationData mMyLocationData = new MyLocationData.Builder().latitude(location.getLatitude())
112                     .longitude(location.getLongitude()).build();
113
114             // 设置定位球的位置
115             mBaiduMap.setMyLocationData(mMyLocationData);
116             // 移动定位球到中心位置
117             LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
118             MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
119             mBaiduMap.animateMapStatus(msu);
120
121         }
122
123     }
124
125     // 程序退出时关闭
126     @Override
127     protected void onDestroy() {
128         mLocationClient.stop();
129         mBaiduMap.clear();
130         geocoder.destroy();
131         super.onDestroy();
132     }
133
134 }

xml文件和Mainfest文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.lixu.baidu_gps"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6
 7     <uses-sdk
 8         android:minSdkVersion="19"
 9         android:targetSdkVersion="19" />
10
11     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
12     </uses-permission>
13     <uses-permission android:name="android.permission.INTERNET" >
14     </uses-permission>
15     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
16     <uses-permission android:name="android.permission.WAKE_LOCK" >
17     </uses-permission>
18     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
19     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
20     <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
21     <uses-permission android:name="android.permission.GET_TASKS" />
22     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
23     </uses-permission>
24     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
25     <!-- 这个权限用于进行网络定位 -->
26     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
27     </uses-permission>
28     <!-- 这个权限用于访问GPS定位 -->
29     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
30     </uses-permission>
31     <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
32     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
33     </uses-permission>
34     <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
35     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
36     </uses-permission>
37     <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
38     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
39     </uses-permission>
40     <!-- 用于读取手机当前的状态 -->
41     <uses-permission android:name="android.permission.READ_PHONE_STATE" >
42     </uses-permission>
43     <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
44     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
45     </uses-permission>
46     <!-- 访问网络,网络定位需要上网 -->
47     <uses-permission android:name="android.permission.INTERNET" />
48     <!-- SD卡读取权限,用户写入离线定位数据 -->
49     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
50     </uses-permission>
51     <!-- 允许应用读取低级别的系统日志文件 -->
52     <uses-permission android:name="android.permission.READ_LOGS" >
53     </uses-permission>
54
55     <application
56         android:allowBackup="true"
57         android:icon="@drawable/ic_launcher"
58         android:label="@string/app_name"
59         android:theme="@style/AppTheme" >
60         <activity
61             android:name=".MainActivity"
62             android:label="@string/app_name" >
63             <intent-filter>
64                 <action android:name="android.intent.action.MAIN" />
65
66                 <category android:name="android.intent.category.LAUNCHER" />
67             </intent-filter>
68         </activity>
69
70         <meta-data
71             android:name="com.baidu.lbsapi.API_KEY"
72             android:value="TkWtCcaqum3XHoUSHwjHTVoA" />
73
74         <service
75             android:name="com.baidu.location.f"
76             android:enabled="true"
77             android:process=":remote" >
78         </service>
79     </application>
80
81 </manifest>
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5
 6     <LinearLayout
 7         android:id="@+id/ll"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:orientation="horizontal" >
11
12         <EditText
13             android:id="@+id/et1"
14             android:layout_weight="1"
15             android:layout_width="wrap_content"
16             android:layout_height="wrap_content"
17             android:hint="请输入城市名" />
18         <EditText
19             android:id="@+id/et2"
20             android:layout_weight="1"
21             android:layout_width="wrap_content"
22             android:layout_height="wrap_content"
23             android:hint="请输入街道名" />
24
25         <Button
26             android:id="@+id/sousuo"
27             android:layout_width="wrap_content"
28             android:layout_height="wrap_content"
29             android:text="搜索" />
30     </LinearLayout>
31
32     <com.baidu.mapapi.map.MapView
33         android:id="@+id/baidumv"
34         android:layout_below="@id/ll"
35         android:layout_width="match_parent"
36         android:layout_height="match_parent" />
37
38 </RelativeLayout>

运行效果图:

时间: 2024-10-13 11:21:44

百度地图可视化定位效果,可以输入目的地定位。的相关文章

解决百度地图在iPad和iPhone上无法定位

在iPad和iPhone上运行百度地图经常出现如下问题 didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn't be completed. (kCLErrorDomain error 0.)" 解决方法: 1.检查设备确实连上了有效的wifi活着3G 2.去设置---隐私--定位服务查看应用是否定位 3.重新连接网络 4. Product---Scheme---Edit Scheme---

vue 使用百度地图GL - 3D效果

<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=CWmiAPiwuHW6sGdMbAReZdqU"></script> <template> <div class="drawer"> <div id="allmap" style="wid

微信企业号开发:微信考勤百度地图定位,错误修正

在使用百度地图进行微信考勤时,遇到很多问题,尤其是定位问题,我知道定位有偏差,但使用百度地图,几十次后,偶尔一次会错的离谱,例如直接就定位到了外省,例如我一直在西安,一次定位到了天津,一次定位到了石家庄,我不知道为什么会这样.偏差几千米还能理解,可偏差几百公里就是在让人不能理解了.是因为我用的百度API是免费的吗?当然出现的次数不多,一般情况下,四五十次,会偶尔出现一两次这么离谱的偏差. 实在找不到原因,也不能是缓存,因为我没有去过石家庄,天津.没办法,但这个问题,又不能不解决,于是只能把四种计

百度地图三维效果实现

之前用百度地图都是用的二维地图,现在发现百度地图支持三维效果,欲实现三维效果只需添加如下两句代码即可: map.setMapType(BMAP_PERSPECTIVE_MAP);     //修改地图类型为3D地图 map.setCurrentCity("北京市");  //设置当前城市 ,整体代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type"

Android笔记:百度地图与高德地图坐标转换问题

Android笔记:百度地图与高德地图坐标转换问题 安卓项目使用了百度地图的定位SDK,web端使用的也是百度地图, 后来发现界面显示百度地图不如高德效果好,web改用高德地图,原本的百度地图坐标是可以直接使用的,由于高德和百度地图的坐标系不一致 要如何转换呢. 补充了下坐标系知识后发现高德使用的坐标系是“gcj02”也就是大家所说的“火星坐标”, 百度使用的是“BD09”因为是百度所用大家习惯称之为“百度坐标”  ,如何将bd09转为gcj02呢,突然想到在百度的定位sdk里有这样一段说明(来

Android studio 百度地图开发(8)地图已标记POI点和搜索POI点的获取和利用

一简要描述 二地图中已标记POI点 1接口 2MapPoi 类 3获取POI 三搜索关键词获取POI点 描述 1combaidumapapisearchpoi 接口OnGetPoiSearchResultListener PoiResult类 PoiInfo类 搜索POI 2combaidumapapisearchsug 接口 SuggestionResultseggestionInfo 联想搜索 四搜索效果 1联想搜索效果 2直接搜索效果 3选择一条联想搜索结果 五总结 一.简要描述 百度地图

百度地图2

百度地图(2) 核心类Map:画地图必须调用的var map = new BMap.Map("allmap");其中allmap是想要画地图的dom节点的id.其中map可以控制整个地图的缩放.移动.以及是否加入一些自定义的图片,以及添加点击事件等等操作都需要这个对象,map是整个地图的核心对象. 定位 定位的方式有浏览器自带的方式Geolocation,还有根据详细地址或者经纬度来定位Geocoder. Geolocation:是调用了浏览器自带的定位接口,如果浏览器不支持会返回nu

iOS 百度地图获取地理位置名称

目前很多的应用都用到了百度地图这一版本,不过有些方法是我在网上并没有找到的,但是这并不意味着就没有相关的文章介绍,那么这里我所记录的就是百度地图获取地理位置,以及省份,城市,区域,其他的不多说了,直接进入正题吧:       创建地图基本图层 首先,需要到http://dev.baidu.com/wiki/imap/index.php?title=iOS平台/相关下载下载全部内容,包括文档,示例代码和开发包. 然后获取自己的API KEY,具体方法按百度的官网申请就行,比较简单. 下载的文件应该

百度地图和solr展示资源和附近等功能的实现 四

这章主要是定位功能,首先谈谈H5的定位,开始大部分的代码都是这个上面差不多https://www.cnblogs.com/lijuntao/p/6439596.html 但是第一步定位一直走不通, ie浏览器可以获取到定位的位置外,其他浏览器基本获取不到位置,https试过好像也不行,最后一朋友在国外试代码,结果可用,可怕啊,为啥不用百度地图自己的定位,可能是我技术不到位把,怎么也定位不准,也想过个种办法,最后还是放弃了,才用的H5定位, 开始用的ie测试的,效果蛮好,测试工程说,其他浏览器都不