android开发对应高德地图定位服务进度一
进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录。之后创建新的应用并且绑定软件得到相应的key。
这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件的名称。得到对应的key用于之后的环境的配置。
之后导入相关用到的高德地图对应的包:相关的内容如下
之后就是对于project和app对应的gradle都需要进行更改。
主要的是关于gradle和AndroidManifest等信息的相关的配置还有就是关于SHA1等获取等等先关的元素。
之后就是进行xml和java对应的编程:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"> <com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
package com.example.wenlocation; import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.MapView;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.MyLocationStyle;
import java.text.SimpleDateFormat;
import java.util.Date; public class MainActivity extends AppCompatActivity implements LocationSource, AMapLocationListener { //显示地图需要的变量
private MapView mapView;//地图控件
private AMap aMap;//地图对象 //定位需要的声明
private AMapLocationClient mLocationClient = null;//定位发起端
private AMapLocationClientOption mLocationOption = null;//定位参数
private OnLocationChangedListener mListener = null;//定位监听器 //标识,用于判断是否只显示一次定位信息和用户重新定位
private boolean isFirstLoc = true; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //显示地图
mapView = (MapView) findViewById(R.id.map);
//必须要写
mapView.onCreate(savedInstanceState);
//获取地图对象
aMap = mapView.getMap(); //设置显示定位按钮 并且可以点击
UiSettings settings = aMap.getUiSettings();
//设置定位监听
aMap.setLocationSource(this);
// 是否显示定位按钮
settings.setMyLocationButtonEnabled(true);
// 是否可触发定位并显示定位层
aMap.setMyLocationEnabled(true); //定位的小图标 默认是蓝点 这里自定义一团火,其实就是一张图片
MyLocationStyle myLocationStyle = new MyLocationStyle();
myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.mipmap.firetwo));
myLocationStyle.radiusFillColor(android.R.color.transparent);
myLocationStyle.strokeColor(android.R.color.transparent);
aMap.setMyLocationStyle(myLocationStyle); //开始定位
initLoc(); } //定位
private void initLoc() {
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(this);
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
} //定位回调函数
@Override
public void onLocationChanged(AMapLocation amapLocation) { if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
amapLocation.getLatitude();//获取纬度
amapLocation.getLongitude();//获取经度
amapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(amapLocation.getTime());
df.format(date);//定位时间
amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
amapLocation.getCountry();//国家信息
amapLocation.getProvince();//省信息
amapLocation.getCity();//城市信息
amapLocation.getDistrict();//城区信息
amapLocation.getStreet();//街道信息
amapLocation.getStreetNum();//街道门牌号信息
amapLocation.getCityCode();//城市编码
amapLocation.getAdCode();//地区编码 // 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置
if (isFirstLoc) {
//设置缩放级别
aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
//将地图移动到定位点
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(amapLocation.getLatitude(), amapLocation.getLongitude())));
//点击定位按钮 能够将地图的中心移动到定位点
mListener.onLocationChanged(amapLocation);
//添加图钉
aMap.addMarker(getMarkerOptions(amapLocation));
/* 获取定位信息 */
StringBuffer buffer = new StringBuffer();
buffer.append(amapLocation.getCountry() + "" + amapLocation.getProvince() + "" + amapLocation.getCity() + "" + amapLocation.getProvince() + "" + amapLocation.getDistrict() + "" + amapLocation.getStreet() + "" + amapLocation.getStreetNum());
Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
isFirstLoc = false;
} } else {
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ amapLocation.getErrorCode() + ", errInfo:"
+ amapLocation.getErrorInfo());
Log.d("AmapError", "location Error, ErrCode:"
+ amapLocation.getErrorCode() + ", errInfo:"
+ amapLocation.getErrorInfo());
Log.w("AmapError", "location Error, ErrCode:"
+ amapLocation.getErrorCode() + ", errInfo:"
+ amapLocation.getErrorInfo()); Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), amapLocation.getErrorInfo(), Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), amapLocation.getErrorCode(), Toast.LENGTH_LONG).show();
}
}
} //自定义一个图钉,并且设置图标,当我们点击图钉时,显示设置的信息
private MarkerOptions getMarkerOptions(AMapLocation amapLocation) {
//设置图钉选项
MarkerOptions options = new MarkerOptions();
//图标
options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.firetwo));
//位置
options.position(new LatLng(amapLocation.getLatitude(), amapLocation.getLongitude()));
StringBuffer buffer = new StringBuffer();
buffer.append(amapLocation.getCountry() + "" + amapLocation.getProvince() + "" + amapLocation.getCity() + "" + amapLocation.getDistrict() + "" + amapLocation.getStreet() + "" + amapLocation.getStreetNum());
//标题
options.title(buffer.toString());
//子标题
options.snippet("这里好火");
//设置多少帧刷新一次图片资源
options.period(60); return options; }
//激活定位
@Override
public void activate(OnLocationChangedListener listener) {
mListener = listener; } //停止定位
@Override
public void deactivate() {
mListener = null;
} /**
* 方法必须重写
*/
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
} /**
* 方法必须重写
*/
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
} /**
* 方法必须重写
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
} /**
* 方法必须重写
*/
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
处理运行结果之后出现了一些小问题。得到的对应的运行结果是:
由于一些原因显示定位失败。现在还没有找到原因。之后相关的修改等完成之后会进行发表
出现的问题是对于包的导入可能会发生了冲突。通过一些步骤进行了解决。
然后就是对于寻找SHA1 出现的错误。
android开发对应高德地图定位服务进度一的更多相关文章
- Android开发实现高德地图定位
1.获取Key 参考官方文档:http://lbs.amap.com/api/android-location-sdk/guide/create-project/get-key 对于签名文件的获取建议 ...
- Android开发学习——高德地图的实现
1.首先做好下边的准备: 1.1 http://lbs.amap.com/ 注册账号 1.2 下载 定位sdk 和 地图sdk 下载后是这样的 1.3 对下载的进行解压 将他们加入 中,对每 ...
- 高德地图-搜索服务-POI搜索
高德地图-搜索服务-POI搜索 之前公司项目收货地址仿饿了么的收货地址,结果发现自己实现的关键字搜索和周边搜索,搜索到的poi列表跟饿了么的并不完全一样,后来考虑了下,应该是搜索的范围.类型之类的设置 ...
- iOS开发拓展篇—CoreLocation定位服务
iOS开发拓展篇—CoreLocation定位服务 一.简单说明 1.CLLocationManager CLLocationManager的常用操作和属性 开始用户定位- (void)startUp ...
- 高德地图定位不到 报错 location Error, ErrCode:7, errInfo:KEY错误 请到http://lbs.amap.com/api/android-location-sdk/abouterrorcode/查看错误码说明.
出现该问题的可能是高德地图的配置不准确: 仔细配对一下 看sha1 是否是通过应用签名生成的 要区分发布版的sha1 跟调试版的sha1 是不相同的 (小编我第一次反这种错误的时候 是因为我把高得 ...
- Android Studio之高德地图实现定位和3D地图显示
在应用开发中,地图开发是经常需要使用的“组件”,国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码. 效果如图: 首先 ...
- Android之仿ele地图定位效果
PS:最近项目要求,希望在选择地址的时候能够仿ele来实现定位效果.因此就去做了一下.不过ele使用高德地图实现的,我是用百度地图实现的.没办法,公司说用百度那就用百度的吧.个人觉得高德应该更加的精准 ...
- 关于Android studio调用高德地图的简单流程和要点
一,账号与Key的申请 注册成为高德开发者需要分三步: 第一步,注册高德开发者:第二步,去控制台创建应用:第三步,获取Key. 前2步都比较简单,这里说下第三步. 获取Key 1.进入控制台,创建一个 ...
- Android开发之百度地图--环境搭建
这篇文章总结自极客学院张浩老师的android教学课程,在此对张浩老师和崔爽老师表示非常感谢. (一)基础知识 在申请百度地图开发密钥的时候需要用到数字签名证书的内容,所以这里先对此做一下介绍. (1 ...
随机推荐
- C++ 理解类 和 类中的public、protected、private
我们要明确,不只是C++有类,很多语言也会用到类,因为现在很多都是面向对象编程... 在c++中,关于类的理解,个人理解是这样的,具有共同属性的一个集合被称为类, 比如说人这个集合,具有性别,年龄,出 ...
- 1分钟,带你上手“Markdown”语法
前言 Markdown 是一种轻量级的标记语言,有 John Gruber 以及Aaron Hillel Swartz 一起编写.Aaron Hillel Swartz 是一个极富传奇的黑客,有兴趣可 ...
- dpdk中QSBR具体实现
目录 dpdk-QSBR实现 初始化 注册与注销 上线与下线 等待静默 附录 参考 dpdk-QSBR实现 dpdk19.01提供了qsbr模式的rcu库,其具体实现在lib/librte_rcu目录 ...
- 【MyBatis笔记】mapper文件的配置以及说明
<!doctype html>[MyBatis笔记]mapper文件的配置以及说明 figure:last-child { margin-bottom: 0.5rem; } #write ...
- 基于《仙剑奇侠传柔情版》利用Java的简单实现(一)
基于<仙剑奇侠传柔情版>利用Java的简单实现(一) 2018-12-01 23:55:36 by Louis 一,新建一个类GameFrame.class,具体代码如下: pack ...
- Redis入门学习(学习过程记录)
Redis(入门笔记) 学习一个大的技术点,然后顺带着就把这个技术点的面试题给学习了. 学习完一个技术后,如果面试题还不能够解答的话,只能说明学的不精,需要查漏补缺. 下一个学习的方向:Redis-非 ...
- Python - 面向对象(一)入门篇
Python里面有一句话:万物皆是对象 如何面向对象编程 设计类 创建类实例对象 实例对象调用方法 创建对象 在内存中为对象分配空间 调用初始化方法 __init__ 为对象初始化 对象创建后,内 ...
- SpringBoot2整合Redis多数据源
配置文件属性 spring: redis: database: 1 host: 192.168.50.144 port: 6379 password: timeout: 600 #Springboot ...
- Django ajax的简单使用、自定义分页器
一. ajax初识 1. 前后端传输数据编码格式contentType 使用form表单向后端提交数据时,必须将form表单的method由默认的get改为post,如果提交的数据中包含文件,还要将f ...
- 微信开发+百度AI学习:微信网页开发环境搭建
参考微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 两步即可获取微信网页开发能力 STEP1: ...