android中高德地图定位功能并且获取定位的城市
一、概述
今天再一次用到了地图定位功能和地图显示功能,以前一直用的是高德地图定位,这次还是用高德,记录一下以便以后再做时方便一些。因为业务需要的功能不是很全,可以参考https://www.2cto.com/kf/201504/396156.html
高德地图申请成为开发者后的限制次数:
Key平台类型 |
服务 |
个人开发者 |
认证个人开发者 |
企业开发者 |
|||
---|---|---|---|---|---|---|---|
调用量 (次/日) |
并发量 (次/秒) |
调用量 (次/日) |
并发量 (次/秒) |
调用量 (次/日) |
并发量 (次/秒) |
||
Web服务API |
地理编码 |
6000 |
100 |
300000 |
200 |
3000000 |
1000 |
逆地理编码 |
6000 |
100 |
300000 |
200 |
3000000 |
1000 |
|
驾车路径规划 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
公交路径规划 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
步行路径规划 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
骑行路径规划 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
距离测量 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
搜索 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
输入提示 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
行政区查询 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
交通态势 |
2000 |
20 |
30000 |
50 |
300000 |
200 |
|
抓路服务 |
2000 |
50 |
30000 |
50 |
300000 |
200 |
|
云图搜索 |
2000 |
20 |
30000 |
50 |
300000 |
200 |
|
云图存储 |
2000 |
20 |
30000 |
50 |
300000 |
200 |
|
静态地图 |
100000 |
400 |
3000000 |
500 |
6000000 |
1000 |
|
IP定位 |
100000 |
100 |
300000 |
200 |
3000000 |
1000 |
|
坐标转换 |
100000 |
100 |
300000 |
200 |
3000000 |
1000 |
|
天气查询 |
100000 |
100 |
300000 |
200 |
3000000 |
1000 |
|
智能硬件定位 |
无法申请Key |
无法申请Key |
无法申请Key |
无法申请Key |
3000000 |
1000 |
2、图片效果:
4、首先是根据当前位置获得经纬度activity
(1)androidMainfest.xml中写入高德地图api的key值
<meta-dataandroid:name="com.amap.api.v2.apikey"android:value="9cb6f84fb4821043af1bd1*******" />
(2)引入地图和定位的jar包(到网上下载最新的)
//地图显示功能
compile files('libs/AMap_2DMap_V2.9.0_20160525.jar')
//地图定位功能
compile files('libs/AMap_Location_V2.5.0_20160526.jar')
(3)Activity类实现定位监听
public class MainBuildingActivity extends MainActivity implements AMapLocationListener
(4)
private AMapLocationClient locationClient = null;
private AMapLocationClientOption locationOption = null;
locationClient = new AMapLocationClient(this.getApplicationContext());
locationOption = new AMapLocationClientOption();
// 设置定位模式为高精度模式
locationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
// 设置定位监听
locationClient.setLocationListener(this);
initOption();
locationClient.setLocationOption(locationOption);
locationClient.startLocation();
@Override
public void onLocationChanged(AMapLocation aMapLocation) {if (aMapLocation.getErrorCode() == 0) {final Map<String, String> map = new HashMap<>();//获取纬度map.put("longitude", String.valueOf(aMapLocation.getLongitude()));map.put("latitude", String.valueOf(aMapLocation.getLatitude()));ToastUtil.showShort(MainBuildingActivity.this,"___"+aMapLocation.getCity());Log.i("feng",aMapLocation.getCity());}
}
private void initOption() {// 设置是否需要显示地址信息locationOption.setNeedAddress(true);/*** 设置是否优先返回GPS定位结果,如果30秒内GPS没有返回定位结果则进行网络定位* 注意:只有在高精度模式下的单次定位有效,其他方式无效*/
// locationOption.setGpsFirst(true);// 设置是否开启缓存locationOption.setLocationCacheEnable(true);// 设置发送定位请求的时间间隔,最小值为1000,如果小于1000,按照1000算locationOption.setInterval(5000);locationOption.setOnceLocation(true);}
5、根据经纬度在地图上显示的功能Activity
public class BuildingPostionActivity extends BaseActivity implements OnMapLoadedListener,AMap.OnMarkerClickListener {private AMap aMap;private MapView mapView;private List<LatLng> latLngList = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_location);mapView = findViewById(R.id.map);mapView.onCreate(savedInstanceState); // 此方法必须重写init();}/*** 初始化AMap对象*/private void init() {setTitle("楼盘位置",false,null);registerBack();if (aMap == null) {aMap = mapView.getMap();setUpMap();}}private void setUpMap() {aMap.setOnMapLoadedListener(BuildingPostionActivity.this);// 设置amap加载成功事件监听器aMap.setOnMarkerClickListener(this);// 往地图上添加位置标志markeraddMarkersToMap();}/*** 方法必须重写*/@Overrideprotected void onResume() {super.onResume();mapView.onResume();}/*** 方法必须重写*/@Overrideprotected void onPause() {super.onPause();mapView.onPause();}/*** 方法必须重写*/@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}/*** 方法必须重写*/@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}/*** 在地图上添加marker*/private void addMarkersToMap() {//List<BuildingBean> positions = (List<BuildingBean>) getIntent().getSerializableExtra("positions");List<BuildingBean> positions=new ArrayList<>();BuildingBean bean=new BuildingBean();bean.setLatitude("123.623458");bean.setLongitude("41.780748");bean.setBuildingName("滑翔小区");positions.add(bean);for (BuildingBean position:positions) {LatLng latLng = new LatLng(Double.valueOf(position.getLongitude()),Double.valueOf(position.getLatitude()));Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.location)).title(position.getBuildingName()));marker.showInfoWindow();latLngList.add(latLng);}}/*** 对marker标注点点击响应事件*/@Overridepublic boolean onMarkerClick(final Marker marker) {return false;}/*** 监听amap地图加载成功事件回调*/@Overridepublic void onMapLoaded() {// 设置所有maker显示在当前可视区域地图中LatLngBounds.Builder builder = new LatLngBounds.Builder();for (LatLng latLng:latLngList) {builder.include(latLng);}LatLngBounds build = builder.build();aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(build, 10));aMap.moveCamera(CameraUpdateFactory.zoomBy(4));aMap.setOnMapLoadedListener(this);//设置地图显示监听器}
}
(2)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:background="@color/white"android:orientation="vertical" ><com.amap.api.maps2d.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>
android中高德地图定位功能并且获取定位的城市相关推荐
- Android 基于高德地图的锁屏后定位和轨迹自动纠偏(离线版)
目录 一.后台如何持续获取定位 1.后台以及锁屏后持续定位异常的原因以及应对方案探索 2.后台持续获取定位失败的应对方案 二.对坐标点进行加工处理 (1).为什么要加工处理 (2).如何加工处理 本文 ...
- Android中高德地图与百度地图坐标转换
项目中实验数据点取自高德地图,它是火星坐标系统(下面会有解释),而现在希望用百度地图的SDK进行开发,两套不同的规范自然需要进行转换.如何解决这个问题呢?参考了网上很多人的博客和资料. 最终解决此问题 ...
- android中高德地图轨迹回放,轨迹回放-点标记-示例中心-JS API 2.0 示例 | 高德地图API...
轨迹回放 html, body, #container { height: 100%; width: 100%; } .input-card .btn{ margin-right: 1.2rem; w ...
- 基于Android的高德地图的定位和运动轨迹记录的功能
废话不多说,首先去高德地图的API上获取key(这一步很重要),因为没有KEY是无法获取高德地图的. 首先这是高德地图API的网址https://lbs.amap.com/,可以点击进去 ...
- Android使用高德地图api实现基础定位
Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...
- 基于高德地图JsAPI进行浏览器精确定位,实现手机端考勤打卡功能
前言: 由于项目需求需要在项目中实现手机端(基于网页)考勤打卡功能,最初考虑使用H5自身定位功能,但尝试过后,效果很不稳定.然后尝试使用百度地图JsAPI,百度家的稳定倒是很稳定,没想到的是定位位置和 ...
- (2023进阶版)vue+h5 通过高德地图(原生) 获取当前位置定位
前言:因为也是用的上一个版本的代码,为了描述清楚所以就直接复制文章来更改了,这一版更加完善简洁,高德地图精确度也更高 (2021年写过的一版上线了挺长时间,2023年突然被应用市场下架,说流程走不通, ...
- Android实现高德地图轨迹回放
Android实现高德地图轨迹回放 写在前面 准备 官方文档解读 创建应用: 地图api引入: 权限添加 效果展示 过程实现 地图初始化 定位 显示标记点 点平滑移动 添加呼吸点 写在结尾 写在前面 ...
- Android 集成高德地图SDK
今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能 =-= 第一步:引入高德地图的SDK. 首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新 ...
最新文章
- Exchange邮件服务器实现外部邮件的收发
- 这个网盘搜索好像还不错
- 深入浅出 Javascript 事件
- VTK:隐式平面小部件用法实战
- c语言 结构体里使用动态数组_PHP 语法六数组使用及内部结构
- Jmeter提取响应结果中的json数据
- js 兼容event.target
- 《『若水新闻』客户端开发教程》——07.升级新闻内容UI
- html多行文本框_HTML的七大标签怎么运用?
- 浅谈机器学习-分类和聚类的区别
- OpenCV 学习笔记(mean shift 算法)
- 变量命名神器Codelf
- 微信小程序wx.createInnerAudioContext使用方法
- java 字符串掐头去尾_java中常见的类
- bootstrap.yml与application.yml的区别
- Efficient Estimation of Word Representations in Vector Space
- SQL进阶教程——自连接的用法(第二章)
- UG10.0汽车大模钢料编程带刀路3D图档
- 1003a+-*/b
- 网络上的两台计算机如何互相访问,家里两台电脑通过路由器共同上网,怎样设置可以让两台电脑互相访问?...
热门文章
- 多分类学习:OvO、OvR、ECOC
- Linux安装tar软件教程,tar的简单实用及linux常见软件的安装
- 2019 高校运维赛 writeup
- 计算机按键变成音符怎么弄,电脑键盘的数字都变成了符号、怎么弄才能变成数字阿?...
- Django Model 定义语法
- [模板] 计算几何2: 自适应Simpson/凸包/半平面交/旋转卡壳/闵可夫斯基和
- 他一年开发19款!款款口碑爆棚
- excel组合汇总_Excel汇总20140414
- 如何用redis设计一个运动步数排行榜?
- 服务器光纤信号灯,光纤收发器的六个指示灯都代表什么?