你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
首页
热门
推荐
精选
登录
|
注册
谷歌地图API接入和自动定位示例工程
立即下载
用AI写一个
金额:
1
元
支付方式:
友情提醒:源码购买后不支持退换货
立即支付
我要免费下载
发布时间:2020-06-23
3人
|
浏览:4895次
|
收藏
|
分享
技术:googlemap+jdk8+android sdk+kotlin
运行环境:AndroidStudio 3.x
概述
介绍谷歌地图API的接入,并演示缩放、添加Marker,自动定位等功能
详细
> 本文将详细介绍安卓app开发中基于谷歌地图SDK,进行地图应用的开发流程。将介绍google map API的接入,api的设置和初始化,并实现实时定位功能。 ###一、申请Google地图权限: 使用Google地图Api,需要在谷歌开发平台注册申请相关的权限,获取Token字符串,填写在自己的app相应配置xml中。访问谷歌网站,需要通过梯子科学上网。 访问 https://code.google.com/apis/console/, 使用你的Google账号登陆 登录后,一般会提示你创建项目,如下图:  3.点击 "Create Project" 按钮。输入项目名称,创建项目。 4.进入 凭证  可以看到,右上方已有生成的API Key,复制保存下来。 5.看一下下面有 应用限制 和 API限制 的选项,在开发阶段建议:选择 无 和 不限制 就可以。点击保存,正式创建和保存该项目 ###二、代码实现过程 1.创建Android Studio GoogleMap工程 打开 Android Studio,在快速启动菜单中选择 Start a new Android Studio Project 在创建新项目对话框,New Project 视图,输入 app 名称,选择保存地址,点击 Next。 在 Target Android Devices 窗口,勾选 Phone and Tablet 选框,选择你想要 app 支持的 minimum SDK。从 Minimum SDK 的下拉框中选择 API 19。然后点 Next。 在 Add an Activity to Mobile 窗口,选择 Google Maps Activity,命名GoogleMapActivity,然后点 Next。 在 Customize the Activity 窗口,点击 Finish,完成项目的创建。 Android Studio 将启动 Gradle 并编译项目。这会花几分钟。 2.打开GoogleMapActivity,初始大致是这个样子,已有部分代码 ``` class GoogleMapActivity : AppCompatActivity(), OnMapReadyCallback { private lateinit var mMap: GoogleMap override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_google_map) try { MapsInitializer.initialize(this) } catch (e: Exception) { e.printStackTrace() } // Obtain the SupportMapFragment and get notified when the map is ready to be used. val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) } override fun onMapReady(googleMap: GoogleMap) { } } ``` 3.再看一下Manifest文件,需要添加一下需要的权限:INTERNET和两个LOCATION ```
``` 4.可以看到,API_KEY的配置在string中配置的。找到google_maps_api.xml文件,配置申请得到的API_KEY ```xml
yourApiKey
``` 5.初始化地图加载完成后的缩放大小和地图类型(这里设置围栏卫星地图) ``` override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap mMap.mapType = GoogleMap.MAP_TYPE_SATELLITE mMap.setMinZoomPreference(15f) } ``` 6.初始给地图添加一个Marker ``` override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap mMap.mapType = GoogleMap.MAP_TYPE_SATELLITE mMap.setMinZoomPreference(15f) // Add a marker in Sydney and move the camera val sydney = LatLng(-34.0, 151.0) mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney")) mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) } ``` 7.添加位置实时监听 ``` private fun setLocationMonitor() { val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) //设置位置变化监听 val request = LocationRequest() request.priority = LocationRequest.PRIORITY_HIGH_ACCURACY //request.setInterval(1500) request.fastestInterval = 3000 fusedLocationClient.requestLocationUpdates(request, object : LocationCallback() { override fun onLocationResult(locationResult: LocationResult?) { val curPosition = LatLng(locationResult?.lastLocation?.latitude ?: 0.0, locationResult?.lastLocation?.longitude ?: 0.0) mMap.addMarker(MarkerOptions().position(curPosition).title("当前位置")) mMap.moveCamera(CameraUpdateFactory.newLatLng(curPosition)) } }, Looper.myLooper()) } ``` 在onCreate中调用该方法 8.如何只需要在进入地图时,进行一次定位,不需要实时监听位置的变化,只需要如下获取一次位置信息即可: ``` private fun initCurPosition() { //获取最后一次定位到的位置。 val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) fusedLocationClient.lastLocation.addOnSuccessListener { val curPosition = LatLng(it.latitude, it.longitude) mMap.addMarker(MarkerOptions().position(curPosition).title("当前位置")) mMap.moveCamera(CameraUpdateFactory.newLatLng(curPosition)) } } ``` 同样,在onCreate中调用该方法。 ###三、项目文件结构  ###四、演示效果 
本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
感谢
0
手机上随时阅读、收藏该文章 ?请扫下方二维码
相似例子推荐
评论
作者
jesse0917
1
例子数量
3
帮助
0
感谢
评分详细
可运行:
4.5
分
代码质量:
4.5
分
文章描述详细:
4.5
分
代码注释:
4.5
分
综合:
4.5
分
作者例子
谷歌地图API接入和自动定位示例工程