1、从高德地图下载sdk并放入相应的包

2、权限+key:

<meta-dataandroid:name="com.amap.api.v2.apikey"android:value="key" />

key放自己的!!!

    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /><uses-permission android:name="android.permission.WRITE_SETTINGS" />

3、简单的xml布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.dyw.testgps.TestLocation"><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"><TextViewandroid:text="经度"android:layout_width="wrap_content"android:layout_height="wrap_content" /><EditTextandroid:id="@+id/lng"android:layout_width="85dp"android:layout_height="wrap_content"android:text="118.899714"android:inputType="numberDecimal"/><TextViewandroid:text="纬度"android:layout_width="wrap_content"android:layout_height="wrap_content" /><EditTextandroid:id="@+id/lat"android:layout_width="85dp"android:layout_height="wrap_content"android:text="31.90397"android:inputType="numberDecimal"/><Buttonandroid:id="@+id/loc"android:text="定位"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="4"/></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"><RadioGroupandroid:id="@+id/rg"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"><RadioButtonandroid:id="@+id/manual"android:text="手动定位"android:checked="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RadioButtonandroid:id="@+id/gps"android:text="GPS定位"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RadioGroup></LinearLayout><com.amap.api.maps.MapViewandroid:id="@+id/map1"android:layout_width="match_parent"android:layout_height="match_parent"></com.amap.api.maps.MapView>
</LinearLayout>

4、Java:

public class TestLocation extends AppCompatActivity {private MapView mapView;private AMap aMap;private LocationManager locationManager;String[] permission = new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test_location);locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);mapView = (MapView) findViewById(R.id.map1);mapView.onCreate(savedInstanceState);init1();RadioButton rb = (RadioButton) findViewById(R.id.gps);rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked) {if (Build.VERSION.SDK_INT > 23) {if (!checkPermissionAllGranted(permission)) {requestPermissions(permission, 10000);} else {Log.d("----GPS----", "使用GPS");getGPS();}} else {Log.d("----GPS----", "使用GPS");getGPS();}}}});Button bn = (Button) findViewById(R.id.loc);final TextView latTv = (TextView) findViewById(R.id.lat);final TextView lngTv = (TextView) findViewById(R.id.lng);bn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String lng = lngTv.getEditableText().toString().trim();String lat = latTv.getEditableText().toString().trim();if (lng.equals("") || lat.equals("")) {Toast.makeText(TestLocation.this, "请输入有效的经度、纬度", Toast.LENGTH_SHORT).show();} else {((RadioButton) findViewById(R.id.manual)).setChecked(true);double dlng = Double.parseDouble(lng);double dlat = Double.parseDouble(lat);Log.d("----经度----", dlng + "");Log.d("----纬度----", dlat + "");LatLng pos = tra(dlat, dlng);Log.d("------pos------", pos + "");CameraUpdate cu = CameraUpdateFactory.changeLatLng(pos);aMap.moveCamera(cu);MarkerOptions markerOptions = new MarkerOptions();markerOptions.position(pos);markerOptions.title("金陵科技学院");markerOptions.snippet("摘录信息:教育");markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));markerOptions.draggable(true);Marker marker = aMap.addMarker(markerOptions);marker.showInfoWindow();MarkerOptions markerOptions1 = new MarkerOptions();LatLng pos1 = tra(dlat + 0.001, dlng);Log.d("dasdadasdadas", pos1 + "");markerOptions1.position(pos1).title("金陵科技学院食堂").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)).draggable(true);ArrayList<BitmapDescriptor> giflist = new ArrayList<>();giflist.add(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));giflist.add(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));giflist.add(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));LatLng pos2 = tra(dlat - 0.001, dlng);MarkerOptions markerOptions2 = new MarkerOptions().position(pos2).icons(giflist).title("金陵科技学院宿舍").draggable(true).period(10);ArrayList<MarkerOptions> optionlist = new ArrayList<>();optionlist.add(markerOptions1);optionlist.add(markerOptions2);aMap.addMarkers(optionlist, true);}}});}private void getGPS() {if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 300, 8, new LocationListener() {@Overridepublic void onLocationChanged(Location location) {updatePosition(location);double latt = location.getLatitude();double lngg = location.getLongitude();Log.d("----latt-----", latt + "+++++++");Log.d("----lngg-----", lngg + "+++++++");}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}updatePosition(locationManager.getLastKnownLocation(provider));}@Overridepublic void onProviderDisabled(String provider) {}});}private LatLng tra(double i, double j){LatLng gps = new LatLng(i, j);CoordinateConverter converter = new CoordinateConverter(this);converter.from(CoordinateConverter.CoordType.GPS);converter.coord(gps);LatLng pos = converter.convert();return pos;}private void updatePosition(Location location) {LatLng gps = new LatLng(location.getLatitude(), location.getLongitude());CoordinateConverter converter = new CoordinateConverter(this);converter.from(CoordinateConverter.CoordType.GPS);converter.coord(gps);LatLng pos = converter.convert();CameraUpdate cu = CameraUpdateFactory.changeLatLng(pos);aMap.moveCamera(cu);aMap.clear();MarkerOptions markerOptions = new MarkerOptions();markerOptions.position(pos);markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_round));markerOptions.draggable(true);Log.d("----updateposition----", "pos:" + pos);Marker marker = aMap.addMarker(markerOptions);Log.d("----updateposition----", "marker:" + marker);}private void init1() {if (aMap == null) {aMap = mapView.getMap();CameraUpdate cu = CameraUpdateFactory.zoomTo(15);aMap.moveCamera(cu);CameraUpdate tiltUpdate = CameraUpdateFactory.changeTilt(30);aMap.moveCamera(tiltUpdate);}}@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();}private boolean checkPermissionAllGranted(String[] permissions) {for (String permission : permissions) {if (ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {// 只要有一个权限没有被授予, 则直接返回 falsereturn false;}}return true;}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == 10000) {boolean isAllGranted = true;// 判断是否所有的权限都已经授予了for (int grant : grantResults) {if (grant != PackageManager.PERMISSION_GRANTED) {isAllGranted = false;break;}}if (isAllGranted) {// 如果所有的权限都授予了, 则执行备份代码Log.d("GPS","执行");getGPS();} else {// 弹出对话框告诉用户需要权限的原因, 并引导用户去应用权限管理中手动打开权限按钮}}}
}

有问题,请多指教!!!!

关注我的技术公众号,每个工作日都有优质技术文章推送。
微信扫一扫下方二维码即可关注:

GPS定位+经纬度定位相关推荐

  1. 开源一个安信可A9g小项目微信小程序定位器项目②GPS模块如何定位经纬度并且上报到MQTT服务器,实现远程查看模块的经纬度;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 如何在windows10上环境搭建,编译烧录代码固件,查看运行 ...

  2. Android获取GPS网络定位经纬度信息

    定位一般分为是:GPS定位,WIFI定位,基站定位 和 AGPS定位 GPS定位 GPS定位需要手机GPS模块硬件支持.GPS走的是卫星通信的通道,在没有网络连接的情况下也能使用,并且通过GPS方式准 ...

  3. c语言谷歌坐标转百度坐标,关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码...

    关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码 2020年08月10日 阅读数:31 这篇文章主要向大家介绍关于GPS定位经纬度到谷歌(google)坐标以及百度(百 ...

  4. Android中获取定位经纬度信息

    场景 根据GPS获取经纬度效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实 ...

  5. vue 微信公众号获取定位经纬度 腾讯地图逆地址解析为具体地址

    最近做项目需要用到 微信公众号获取定位,并将定位转换为具体地址的需求,找了挺多,最后整理下,分享给大家~ 我这里使用的是腾讯地图,也可以使用其他的如百度.高德等. 思路是,先使用微信开放文档的获取定位 ...

  6. android gps定位工具类,Android原生GPS和网络定位工具类

    在应用开发中我们常常需要网络获取位置的方法,这里做一个工具类的封装,使用的是Android原生定位,包含两种方式,一种是原生GPS一种是网络定位的封装实现: 工具类代码如下所示: package co ...

  7. GPS是如何定位的?

                                                                                    <目录> GPS 全球经济基 ...

  8. 快速实现ML302 GPS+4G发送定位信息详解

    ML302 GPS定位并TCP发送定位信息 一.本例程实现功能 二. Core提供的TCP/UDP功能介绍 三.模块介绍 四.接线图 六.完整代码 七.LIB_Cat1TcpUdpConfig初始化函 ...

  9. Android获取当前位置(GPS和网络定位)

    1.添加定位权限 <!--定位权限--> <uses-permission android:name="android.permission.ACCESS_FINE_LOC ...

  10. GPS及AGPS定位基本原理解析

    最近看到咱们国内的的导航:北斗导航已经完全部署完了么,然后就去查找资料了解了一下导航这个玩意,最后发现其实不管什么导航其实都差不多,只是用的卫星不一样,如果用GPS导航可能就是使用美国那边发射的卫星, ...

最新文章

  1. js获取 浏览器,手机内核
  2. 作为程序员必须要掌握的三种语言
  3. Python爬虫百度搜索
  4. 活久见的重构 - iOS 10 UserNotifications 框架解析
  5. mysql 南邮ctf_南邮ctf web
  6. 更换Winform 皮肤(上)----使用现有皮肤
  7. 记一次 .NET 某外贸Web站 内存泄漏分析
  8. 不同网段虚拟机,互相访问时的路由配置,附路由知识学习
  9. 循环机换变速箱油教程_变速箱油用循环机换还是重力换更好?一次讲清楚,新手司机学学...
  10. Oracle 收购Sun之后的演义:IBM 和SAP何去何从
  11. 3Dcnn 降假阳性模型调试(三)
  12. C++ Primer Plus学习(四)—— string类实践
  13. Tomcat配置虚拟路径使上传文件和服务器分离及上传文件
  14. 计算机网络入门知乎,网络工程师论文发表范文简述计算机网络基础教学
  15. ExtJs视频教程1(陈治文)
  16. 微信小程序给公众号发送模板消息
  17. ## Python笔记
  18. 安装CAD出现Error:1402
  19. Linux Kernel GFP_KERNEL
  20. PIE-engine APP教程 ——基于水体指数或监督分类方法的水体频率计算

热门文章

  1. 2021最新H3CSE认证备考练习题,错过等明年!
  2. Epson LQ1600K3+ 打印区域
  3. 史上最详细Oracle 10g安装教程
  4. 中标麒麟系统u盘安装_怎么从u盘启动安装中标麒麟操作系统
  5. WIN7开机欢迎界面后黑屏
  6. 基于java的飞机大战雷电游戏的开发与设计#毕业设计
  7. 2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
  8. 王国纪元服务器不稳定,王国纪元闪退怎么解决 游戏闪退解决方法
  9. RedHat Linux各版本汇总
  10. Vista v12.0 Win32-ISO 1DVD(地震数据处理)