高德地图定位及导航开发流程

关于高德地图导航定位及导航

最进简单研究了一下关于高德地图的使用,,简单实现了定位搜素,以及驾车的路径规划,一下将介绍我的实现过程:


先展示一下实现的简单效果:

首先需要进行配置,配置详情如下:

1、打开高德开放平台

2、创建应用

3、添加新key:dd9dde5da25a5811031cb1beb5a******

sha1值获取:找到系统默认的debug.keystore(C:\Users\Administrator\.android\debug.keystore)

cmd窗口或android studio 中的Terminal中执行命令:keytool -v -list -keystore keystore地址

4、添加jar和so库(不要添加v4包)

so库添加方式:

第一种:使用默认配置,不需要修改build.gradle。在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。

第二种:使用自定义配置,将下载文件的 armeabi 文件夹复制到 libs 目录,如果有这个目录,请将下载的 so 库复制到这个目录,然后打开build.gradle,找到 sourceSets 标签:

sourceSets{

main{

jniLibs.srcDirs = ['libs']

}

}

5、配置

1、配置AndroidManifest.xml

1、声明Service组件

<service android:name="com.amap.api.location.APSService"></service>

2、声明权限

<!--用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

<!--用于访问GPS定位-->

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<!--用于访问网络,网络定位需要上网-->

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<!--用于读取手机当前的状态-->

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

<!--用于写入缓存数据到扩展存储卡-->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<!--用于申请调用A-GPS模块-->

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

<!--用于申请获取蓝牙信息进行室内定位-->

<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

3、设置高德Key

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key       

            

</meta-data>

下面实现定位和蓝点显示:

1、声明成员变量

//声明AMapLocationClient类对象

public AMapLocationClient mLocationClient = null;

2、初始化定位

//初始化定位

mLocationClient = new AMapLocationClient(getApplicationContext());

3、设置定位回调监听

mLocationClient.setLocationListener(new AMapLocationListener(){

 @Override

             public void onLocationChanged(AMapLocation aMapLocation) {

//获取定位结果

}

});

4、定位结果处理

if (aMapLocation != null) {

            if (aMapLocation.getErrorCode() == 0) {

                //可在其中解析amapLocation获取相应内容。

                int locationType = aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表

                double latitude = aMapLocation.getLatitude();//获取纬度

                double longitude = aMapLocation.getLongitude();//获取经度

                float accuracy = aMapLocation.getAccuracy();//获取精度信息

                String address = aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址。

                aMapLocation.getCountry();//国家信息

                aMapLocation.getProvince();//省信息

                aMapLocation.getCity();//城市信息

                aMapLocation.getDistrict();//城区信息

                aMapLocation.getStreet();//街道信息

                aMapLocation.getStreetNum();//街道门牌号信息

                aMapLocation.getCityCode();//城市编码

                aMapLocation.getAdCode();//地区编码

                aMapLocation.getAoiName();//获取当前定位点的AOI信息

                aMapLocation.getBuildingId();//获取当前室内定位的建筑物Id

                aMapLocation.getFloor();//获取当前室内定位的楼层

                //获取定位时间

                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                Date date = new Date(aMapLocation.getTime());

                df.format(date);

                Log.e("TAG", "纬度:" + latitude + "   经度:" + longitude + "  地址:" + address);

            } else {

                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。

                Log.e("AmapError", "location Error, ErrCode:"

                    + aMapLocation.getErrorCode() + ", errInfo:"

                    + aMapLocation.getErrorInfo());

            }

}

7、地图

1、在xml中声明MapView控件

2、在activity中初始化MapView

3、在声明周期中调用MapView的声明周期:onCreate\onResume\onPause\onDestroy\onSaveInstanceState

8、蓝点

1、创建MyLocationStyle对象: style = new MyLocationStyle();

2、设置定位间隔时间:style.interval(2000);

3、设置圆形区域:

1、圆形区域填充色:style.radiusFillColor(Color.rgb(0, 255, 255));

2、圆形区域(以定位位置为圆心,定位半径的圆形区域)的边框颜色:style.strokeColor(Color.rgb(0, 100, 255));

3、圆形区域(以定位位置为圆心,定位半径的圆形区域)

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
基于高德地图的Pokémon Go开发可提供更丰富和实际的游戏体验。Pokémon Go是一款增强现实游戏,结合了现实世界和虚拟世界。高德地图提供了强大的地理信息服务,可以作为Pokémon Go的核心组件,从而提升其游戏体验。 首先,基于高德地图的Pokémon Go可以更精确地定位和展示游戏中的Pokémon。通过高德地图定位功能,玩家可以在现实世界中准确找到Pokémon出现的位置。高德地图提供了详细的地图数据,包括建筑物、街道和地点名称等,可以准确地标记Pokémon出现的位置,使得玩家可以更容易地捕捉它们。 其次,高德地图导航功能可以帮助玩家更方便地探索Pokémon世界。在游戏中,玩家需要移动到各个地点来寻找不同的Pokémon。利用高德地图导航功能,游戏可以为玩家提供最佳的路径规划,指引他们到达目的地。这不仅使得探索过程更加便捷,也增加了游戏的互动性和乐趣。 此外,高德地图还可以与Pokémon Go的社交功能相结合,促进玩家之间的互动和交流。通过高德地图的位置共享功能,玩家可以方便地分享他们捕捉到的Pokémon或者发现的特殊地点,与其他玩家分享游戏经验。这不仅增加了社区感,也可以促进玩家之间的合作和竞争,提高了游戏的可玩性。 基于高德地图的Pokémon Go开发,可以提供更真实、便捷和互动的游戏体验。高德地图的地理信息服务将能够为玩家提供准确的位置信息和导航功能,使得玩家更容易找到并捕捉到Pokémon。同时,社交功能的加入也将增加玩家之间的互动和乐趣。综上所述,基于高德地图的Pokémon Go开发将极大地提升这款游戏的品质和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值