Android和高德地图Api获取自己的经纬度及位置

首先需要创建一个高德开发者账号。(不会的百度下)
然后我们需要在控制台创建应用
在这里插入图片描述
Sha1获取可以参照:这里
packagename为你创建程序的名字,在Manifest里可以看见
在这里插入图片描述
然后点击创建就行了。
创建之后就可以获取到Key
在这里插入图片描述
接下来我们需要去下载包文件了
点击这里下载
在这里插入图片描述
为了省事,直接选择一键下载。快而且方便
下载完成之后,进行压缩:
在这里插入图片描述
将jar这个文件拷贝到项目的 app->libs里
在这里插入图片描述
这里一定要注意
点击app->build.gradle
在 dependencies里加入 implementation fileTree(includes: [’*.jar’],dir:‘libs’)
在这里插入图片描述
还有就是package
就是在这里插入图片描述如果你名字改变了,一定要将高德api的package改掉
接下来配置Manifest.xml

 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE">uses-permission><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><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS">uses-permission><uses-permission android:name="android.permission.FOREGROUND_SERVICE"/><uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

还需要在application中加入apikey和server

<meta-data android:name="com.amap.api.v2.apikey" android:value="92aa621ff8c377821aa7b6e412e7a706">
<service android:name="com.amap.api.location.APSService">service>

完整代码:


<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.maptest"><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE">uses-permission><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><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS">uses-permission><uses-permission android:name="android.permission.FOREGROUND_SERVICE"/><uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MapTest"><meta-data android:name="com.amap.api.v2.apikey" android:value="92aa621ff8c377821aa7b6e412e7a706">meta-data><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />intent-filter>activity><service android:name="com.amap.api.location.APSService">service>application>manifest>

activitymain.xml


<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/position_text" />LinearLayout>androidx.constraintlayout.widget.ConstraintLayout>

MainActivity:

package com.example.maptest;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;public class MainActivity extends AppCompatActivity {public AMapLocationClient mLocationClient=null;public AMapLocationListener mapLocationListener=new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation aMapLocation) {if(aMapLocation!=null){if(aMapLocation.getErrorCode()==0){double latitude=aMapLocation.getLatitude();double Longitude=aMapLocation.getLongitude();String province=aMapLocation.getProvince();String city=aMapLocation.getCity();String district=aMapLocation.getDistrict();String streetNumber=aMapLocation.getStreetNum();String text="经度: "+Longitude+"\n"+"纬度: "+latitude+"\n"+"详细位置: "+province+city+district+streetNumber;position.setText(text);}else{Log.e("AmapError","location Error, ErrCode:"+ aMapLocation.getErrorCode() + ", errInfo:"+ aMapLocation.getErrorInfo());position.setText("定位失败");}}}};public AMapLocationClientOption mLocationOption=null;private TextView position;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);position=findViewById(R.id.position_text);AMapLocationClient.updatePrivacyShow(getApplicationContext(),true,true);AMapLocationClient.updatePrivacyAgree(getApplicationContext(),true);try {mLocationClient=new AMapLocationClient(getApplicationContext());} catch (Exception e) {e.printStackTrace();}mLocationClient.setLocationListener(mapLocationListener);mLocationOption=new AMapLocationClientOption();mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);if(null!=mLocationClient){mLocationClient.setLocationOption(mLocationOption);mLocationClient.stopLocation();mLocationClient.startLocation();}}public void onDestroy(){super.onDestroy();mLocationClient.onDestroy();}public static String sHA1(Context context){try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert = info.signatures[0].toByteArray();MessageDigest md = MessageDigest.getInstance("SHA1");byte[] publicKey = md.digest(cert);StringBuffer hexString = new StringBuffer();for (int i = 0; i < publicKey.length; i++) {String appendString = Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() == 1)hexString.append("0");hexString.append(appendString);hexString.append(":");}String result = hexString.toString();return result.substring(0, result.length()-1);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}
}

这里注意一下。如果你显示不了定位的话,直接调用sHA1这个方法进行获取自己的SHA1值。然后拷贝到控制台的Sha1里。
最后截图:
在这里插入图片描述
如果有什么不知道的。可以评论区留言。看到会回复


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部