通过百度地图api实现简单经纬度输入定位(安卓端)

您所在的位置:网站首页 百度地图app标记位置 通过百度地图api实现简单经纬度输入定位(安卓端)

通过百度地图api实现简单经纬度输入定位(安卓端)

2023-06-23 04:07| 来源: 网络整理| 查看: 265

老师居然检查作业了!因为之前做过一点,熬夜做了一下,太久没搞安卓了,感觉之前学的全忘了:(。

功能演示

老师的要求是实现输入经纬度,在地图中显示该坐标位置信息 通过网上经纬度查询系统查得桥楼餐厅经纬度为(30.481074,114.393158) 在这里插入图片描述通过在app中输入经纬度,显示位置 在这里插入图片描述在这里插入图片描述

实现方法 百度地图api服务

要使用百度地图服务,首先当然要在百度地图开发平台申请账号,然后按步骤在控制台创建应用,获取应用key 注意两个版本SHA1值的获取方法和区别,包名也要与你AS里工程包名一致

按照百度地图开发指南实现AS配置

主要为导入jar包和.so文件,并在AndroidManifest文件中添加key和所需权限。

实现百度地图的基础显示

创首先需要创建一个AS工程,并新建一个基础活动(activity),在活动的布局文件中添加百度地图控件,用于显示地图

然后在java文件中引用该地图控件,并通过mapview.getmap()方法实现地图的显示 别忘了通过.initialize方法实现初始化

private MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); SDKInitializer.setCoordType(CoordType.BD09LL); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); } 通过marker实现简单的点标记

在百度地图开发指南中详细介绍了如何通过marker实现点标记,使用实例如下

//定义Maker坐标点 LatLng point = new LatLng(39.963175, 116.400244); //构建Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory .fromResource(R.drawable.icon_marka); //构建MarkerOption,用于在地图上添加Marker OverlayOptions option = new MarkerOptions() .position(point) .icon(bitmap); //在地图上添加Marker,并显示

为了显示更加清晰,通过以下方法修改地图缩放级别和中心点

MapStatus mMapStatus = new MapStatus.Builder().target(point).zoom(20).build(); MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus); mBaiduMap.setMapStatus(mapStatusUpdate);

因为老师要求坐标通过自己输入,所以带来两个问题,一是如何将输入坐标edittext类型数据转换成double型,二是如何将输入活动中的坐标数据传到显示活动(另一个activity)中,以实现演示的那种效果

数据类型转换 final double a = Double.parseDouble(lat.getText().toString()); final double b = Double.parseDouble(lng.getText().toString()); 数据传递 intent.putExtra("a",a); intent.putExtra("b",b); startActivity(intent); 数据接收 Bundle bundle = this.getIntent().getExtras(); a = bundle.getDouble("a",a); b = bundle.getDouble("b",b); 需要注意的问题 对不同cpu架构兼容问题

由于不同虚拟机或真机的CPU架构会有区别,在调试时可能会出现CPU架构不兼容的问题,在app包下的build.gradle文件中添加以下设置可解决

splits { abi { enable true reset() include 'x86', 'armeabi-v7a', 'x86_64' universalApk true } } 新建Application类实现context统一初始化

==在SDK各功能组件使用之前都需要调用 SDKInitializer.initialize(getApplicationContext());,建议该方法放在Application的初始化方法中 ==

public class DemoApplication extends Application { @Override public void onCreate() { super.onCreate(); SDKInitializer.initialize(this); SDKInitializer.setCoordType(CoordType.BD09LL); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3