一、概述

今天再一次用到了地图定位功能和地图显示功能,以前一直用的是高德地图定位,这次还是用高德,记录一下以便以后再做时方便一些。因为业务需要的功能不是很全,可以参考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中高德地图定位功能并且获取定位的城市相关推荐

  1. Android 基于高德地图的锁屏后定位和轨迹自动纠偏(离线版)

    目录 一.后台如何持续获取定位 1.后台以及锁屏后持续定位异常的原因以及应对方案探索 2.后台持续获取定位失败的应对方案 二.对坐标点进行加工处理 (1).为什么要加工处理 (2).如何加工处理 本文 ...

  2. Android中高德地图与百度地图坐标转换

    项目中实验数据点取自高德地图,它是火星坐标系统(下面会有解释),而现在希望用百度地图的SDK进行开发,两套不同的规范自然需要进行转换.如何解决这个问题呢?参考了网上很多人的博客和资料. 最终解决此问题 ...

  3. android中高德地图轨迹回放,轨迹回放-点标记-示例中心-JS API 2.0 示例 | 高德地图API...

    轨迹回放 html, body, #container { height: 100%; width: 100%; } .input-card .btn{ margin-right: 1.2rem; w ...

  4. 基于Android的高德地图的定位和运动轨迹记录的功能

           废话不多说,首先去高德地图的API上获取key(这一步很重要),因为没有KEY是无法获取高德地图的. 首先这是高德地图API的网址https://lbs.amap.com/,可以点击进去 ...

  5. Android使用高德地图api实现基础定位

    Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...

  6. 基于高德地图JsAPI进行浏览器精确定位,实现手机端考勤打卡功能

    前言: 由于项目需求需要在项目中实现手机端(基于网页)考勤打卡功能,最初考虑使用H5自身定位功能,但尝试过后,效果很不稳定.然后尝试使用百度地图JsAPI,百度家的稳定倒是很稳定,没想到的是定位位置和 ...

  7. (2023进阶版)vue+h5 通过高德地图(原生) 获取当前位置定位

    前言:因为也是用的上一个版本的代码,为了描述清楚所以就直接复制文章来更改了,这一版更加完善简洁,高德地图精确度也更高 (2021年写过的一版上线了挺长时间,2023年突然被应用市场下架,说流程走不通, ...

  8. Android实现高德地图轨迹回放

    Android实现高德地图轨迹回放 写在前面 准备 官方文档解读 创建应用: 地图api引入: 权限添加 效果展示 过程实现 地图初始化 定位 显示标记点 点平滑移动 添加呼吸点 写在结尾 写在前面 ...

  9. Android 集成高德地图SDK

    今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能 =-= 第一步:引入高德地图的SDK. 首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新 ...

最新文章

  1. Exchange邮件服务器实现外部邮件的收发
  2. 这个网盘搜索好像还不错
  3. 深入浅出 Javascript 事件
  4. VTK:隐式平面小部件用法实战
  5. c语言 结构体里使用动态数组_PHP 语法六数组使用及内部结构
  6. Jmeter提取响应结果中的json数据
  7. js 兼容event.target
  8. 《『若水新闻』客户端开发教程》——07.升级新闻内容UI
  9. html多行文本框_HTML的七大标签怎么运用?
  10. 浅谈机器学习-分类和聚类的区别
  11. OpenCV 学习笔记(mean shift 算法)
  12. 变量命名神器Codelf
  13. 微信小程序wx.createInnerAudioContext使用方法
  14. java 字符串掐头去尾_java中常见的类
  15. bootstrap.yml与application.yml的区别
  16. Efficient Estimation of Word Representations in Vector Space
  17. SQL进阶教程——自连接的用法(第二章)
  18. UG10.0汽车大模钢料编程带刀路3D图档
  19. 1003a+-*/b
  20. 网络上的两台计算机如何互相访问,家里两台电脑通过路由器共同上网,怎样设置可以让两台电脑互相访问?...

热门文章

  1. 多分类学习:OvO、OvR、ECOC
  2. Linux安装tar软件教程,tar的简单实用及linux常见软件的安装
  3. 2019 高校运维赛 writeup
  4. 计算机按键变成音符怎么弄,电脑键盘的数字都变成了符号、怎么弄才能变成数字阿?...
  5. Django Model 定义语法
  6. [模板] 计算几何2: 自适应Simpson/凸包/半平面交/旋转卡壳/闵可夫斯基和
  7. 他一年开发19款!款款口碑爆棚
  8. excel组合汇总_Excel汇总20140414
  9. 如何用redis设计一个运动步数排行榜?
  10. 服务器光纤信号灯,光纤收发器的六个指示灯都代表什么?