android高德地图demo,Android :高德地图demo
高德的账号去改的开房平台进行注册,注册成功后进入个人中心;
进入个人中心后点击应供管理
//这里可以随便写
获取SHA1码
需要的权限有
清单文件中
sourceSets {
main {
jniLibs.srcDirs = [‘libs’]
}
}
写入一个工具类
public class LocationUtils implements AMapLocationListener {
private AMapLocationClient aMapLocationClient;
private AMapLocationClientOption clientOption;
private ILocationCallBack callBack;
public void startLocate(Context context) {
aMapLocationClient = new AMapLocationClient(context);
//设置监听回调
aMapLocationClient.setLocationListener(this);
//初始化定位参数
clientOption = new AMapLocationClientOption();
clientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
clientOption.setNeedAddress(true);
clientOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
clientOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
clientOption.setMockEnable(false);
//设置定位间隔
clientOption.setInterval(2000);
aMapLocationClient.setLocationOption(clientOption);
aMapLocationClient.startLocation();
}
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
//定位成功完成回调
String country = aMapLocation.getCountry();
String province = aMapLocation.getProvince();
String city = aMapLocation.getCity();
String district = aMapLocation.getDistrict();
String street = aMapLocation.getStreet();
double lat = aMapLocation.getLatitude();
double lgt = aMapLocation.getLongitude();
callBack.callBack(country + province + city + district + street, lat, lgt, aMapLocation);
} else {
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
}
}
}
/**
* 自定义图标
*
* @return
*/
public MarkerOptions getMarkerOption(String str, double lat, double lgt) {
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher));
markerOptions.position(new LatLng(lat, lgt));
markerOptions.title(str);
markerOptions.snippet("纬度:" + lat + " 经度:" + lgt);
markerOptions.period(100);
return markerOptions;
}
public interface ILocationCallBack {
void callBack(String str, double lat, double lgt, AMapLocation aMapLocation);
}
public void setLocationCallBack(ILocationCallBack callBack) {
this.callBack = callBack;
}
}
然后就是高德的代码
public class MainActivity extends AppCompatActivity implements LocationSource {
private MapView myMapView;
private AMap aMap;
private LocationSource.OnLocationChangedListener mListener = null;//定位监听器
private LocationUtils locationUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myMapView = findViewById(R.id.MapView);
myMapView.onCreate(savedInstanceState);
initView();
}
private void initView() {
if(aMap == null){
aMap = myMapView.getMap();
}
setLocationCallBack();
//设置定位监听
aMap.setLocationSource(this);
//设置缩放级别
aMap.moveCamera(CameraUpdateFactory.zoomTo(15));
//显示定位层并可触发,默认false
aMap.setMyLocationEnabled(true);
}
private void setLocationCallBack(){
locationUtils = new LocationUtils();
locationUtils.setLocationCallBack(new LocationUtils.ILocationCallBack() {
@Override
public void callBack(String str,double lat,double lgt,AMapLocation aMapLocation) {
//根据获取的经纬度,将地图移动到定位位置
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(lat,lgt)));
mListener.onLocationChanged(aMapLocation);
//添加定位图标
aMap.addMarker(locationUtils.getMarkerOption(str,lat,lgt));
}
});
}
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedListener;
locationUtils.startLocate(getApplicationContext());
}
@Override
public void deactivate() {
mListener = null;
}
@Override
protected void onPause() {
super.onPause();
//暂停地图的绘制
myMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
//销毁地图
myMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//重新绘制加载地图
myMapView.onResume();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
myMapView.onSaveInstanceState(outState);
}
}
xml中只需要写入一个MapView就ok
还有一个反编译地理位置的代码,效果图就不上了
public class AddrChangeActivity extends AppCompatActivity implements View.OnClickListener, GeocodeSearch.OnGeocodeSearchListener {
private EditText Addr_Edit;
private Button Zheng_Btn;
private EditText JinDU_Edit;
private EditText WeiDu_Edit;
private Button Fan_Btn;
private TextView Get_Text;
private GeocodeSearch geocodeSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addr_change);
initView();
//构造 GeocodeSearch 对象,并设置监听。
geocodeSearch = new GeocodeSearch(this);
geocodeSearch.setOnGeocodeSearchListener(this);
//通过GeocodeQuery设置查询参数,调用getFromLocationNameAsyn(GeocodeQuery geocodeQuery) 方法发起请求。
//address表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode都ok
// GeocodeQuery query = new GeocodeQuery(address, "010");
// geocoderSearch.getFromLocationNameAsyn(query);
}
private void initView() {
Addr_Edit = (EditText) findViewById(R.id.Addr_Edit);
Zheng_Btn = (Button) findViewById(R.id.Zheng_Btn);
JinDU_Edit = (EditText) findViewById(R.id.JinDU_Edit);
WeiDu_Edit = (EditText) findViewById(R.id.WeiDu_Edit);
Fan_Btn = (Button) findViewById(R.id.Fan_Btn);
Get_Text = (TextView) findViewById(R.id.Get_Text);
Zheng_Btn.setOnClickListener(this);
Fan_Btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Zheng_Btn:
String addr = Addr_Edit.getText().toString().trim();
if (addr.isEmpty()) {
Toast.makeText(this, "请输入地址", Toast.LENGTH_SHORT).show();
return;
}
//参数1:addr 地址值 参数2:规定一个区域
GeocodeQuery query = new GeocodeQuery(addr, null);
geocodeSearch.getFromLocationNameAsyn(query);
break;
case R.id.Fan_Btn:
String jingdu = JinDU_Edit.getText().toString().trim();
String weidu = WeiDu_Edit.getText().toString().trim();
if (jingdu.isEmpty() || weidu.isEmpty()) {
Toast.makeText(this, "请输入经纬度", Toast.LENGTH_SHORT).show();
return;
}
//这个是经纬度查询的类
LatLonPoint point = new LatLonPoint(Double.parseDouble(jingdu), Double.parseDouble(weidu));
RegeocodeQuery regeocodeQuery = new RegeocodeQuery(point, 2000000000, GeocodeSearch.AMAP);
GeocodeSearch reSe = new GeocodeSearch(this);
reSe.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
Log.e("onRegeocodeSearched", "onRegeocodeSearched");
RegeocodeAddress address = regeocodeResult.getRegeocodeAddress();
Get_Text.setText(address.getFormatAddress()+"地址");
}
@Override
public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
}
});
geocodeSearch.getFromLocationAsyn(regeocodeQuery);
break;
}
}
//把经纬度转换成地址
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
Log.e("onRegeocodeSearched", "onRegeocodeSearched");
RegeocodeAddress address = regeocodeResult.getRegeocodeAddress();
Get_Text.setText(address.getFormatAddress());
}
//是吧地址转换成经度纬度
@Override
public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
Log.e("onGeocodeSearched", "onGeocodeSearched");
//从查出来的结果集 得到地址对象
GeocodeAddress address = geocodeResult.getGeocodeAddressList().get(0);
//从地址对象里面得到 经纬度的类
LatLonPoint latLonPoint = address.getLatLonPoint();
//从这个point取经纬度即可
Get_Text.setText("经度是:" + latLonPoint.getLongitude() + ",纬度是:" + latLonPoint.getLatitude());
}
}
反编译的xml
以上;
android高德地图demo,Android :高德地图demo相关推荐
- android室内地图,概述-Android 室内地图SDK | 高德地图API
Android 室内地图 SDK 简介 说明: 室内地图数据对新用户暂停开放,建议您使用 Android地图SDK 可实现室内外一体化效果. 高德地图 Android 室内地图SDK 是一套室内地图开 ...
- Android第三方开发包之高德地图SDK使用介绍
Android第三方开发包之高德地图SDK使用介绍 前言 准备 Android Studio 配置工程 1,新建一个 Empty Activity 应用项目. 2,添加SDK 3,集成SDK 显示地图 ...
- Android - 简单的显示高德SDK中的3D地图
简单的显示高德SDK中的3D地图 身为一个安卓小白,前几天试了一下高德SDK,踩了几个蠢蠢的坑,秉承着别让其他小白也踩到,我就写一篇怎么简单的实现高德SDK显示地图与小蓝点的教程. 获得key 1.先 ...
- android高德地图使用教程,Android 之 高德地图学习 一 基本地图
自己做的笔记,没有深层的东西,请大神绕行~ 高德地图和百度地图相差不多,网上很多百度地图的视频教学,在这里锻炼下自己的学习能力,来弄下高德地图. 首先 进入 高德地图 官网,注册开发者 ,申请ke ...
- 高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)
Screenshot_20170509-152819.png 前言 最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sd ...
- 高德地图组件在Android的应用以及Android与JavaScript的交互(一)
最近在慕课网学习了关于高德地图组件的课程(其实就是一个广告,内容和官网的API完全一样),发现这个JavaScript API比Android API简单方便多了,于是就打算放在Android APP ...
- Android百度地图、高德地图、腾讯地图导航路线规划问题
Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...
- Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航
主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...
- 高德地图基础使用教程(附demo)
高德地图基础使用教程 简介 带大家一步步实现地图显示特定位置,或定位到当前位置.并且拖拽地图界面能够查询出指定位置周边的信息.通过关键字搜索周边信息. 本教程适合初学者. demo git 地址 一. ...
- android高德地图后台运行,Android手把手教你集成高德地图
在上一篇博客上,和大家分享了如何在Android中集成高德定位以及定位的基本使用.今天我们就来看看高德地图在Android中如何使用吧. 同样,我将本篇博客的内容分为如下部分: (1)添加高德SDK ...
最新文章
- [转] Java @interface 自定义注解
- PHP(Thinkphp框架)将数据表导出csv文件
- 消息中间件的技术选型心得-RabbitMQ ActiveMQ和ZeroMQ
- Win10之打印机扫描为pdf格式
- 【转】js 获取浏览器高度和宽度值(多浏览器
- 阿里云mysql导出表,导出mysql表数据库
- 装机摸鱼日记01--DDR3AMD专用内存+QHQF(6400T)试水
- Email,电子邮箱免费注册流程
- 高德地图开放平台(js免费引入)
- ECPC-2015部分题解
- 下载微信支付sdk的两个方法
- Php绘制棋盘,第二次DIY棋盘,纯手工绘制完美棋盘
- 腾讯收购Foxmail的意图
- 希腊字母常用指代意义及其中英文读音
- 日语操作系统安装日语软件乱码的解放方案
- 树莓派实现简单的人脸识别
- 10种最流行的国外博客程序
- 儿童使用计算机和手机的 危害,孩子长期玩手机危害有哪些?
- 什么是人力资源管理系统?hr系统功能介绍
- php 工厂模式运用实例,php工厂模式的实例