android开发【五】(基于android studio3.2)简单的地图开发

版权声明:欢迎转载请注明转自方辰昱的博客https://blog.csdn.net/viafcccy https://blog.csdn.net/viafcccy/article/details/86566939

首先我们需要登录百度地图官网获取百度地图的sdk

http://lbsyun.baidu.com/apiconsole/key 

点开后 选择注册开发者账号 获取密匙

进入控制台 

此时我们是没有密匙的我们来创建一个应用获取AK

最最重要的 

在下载sdk时务必按照和我一样的方式选择 不能下别的包 并且不能jar和so不同版本的混着用

SH1怎样获取呢?

使用terminal命令行

CD C:\Program Files\Java\jdk1.7.0_71\bin(JDK安装路径)

keytool -list -v -keystore c:\users\your_user_name\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

例如:keytool -list -v -keystore c:\users\Administrator\.android\debug.keystore -alias androiddebugkey -storepass android -keypass androidand 然后就看到SHA1
下面输入然后创建应用后去下载SDK

下载后将压缩包解压我们只需要libs

然后将需要的包放入下面的文件夹

然后我们创建完依赖关系后 

就可以使用百度地图提供的api了

在这里我遇到了一个问题

在引入mapapi时无法识别 在clean project无果后我看了百度的demo发现莫名还有一个jar包 于是我复制过来 添加了一下就好了

这个位置报错

这个是因为地图这个控件需要的布局形式不同

所有我踩的坑都写在上面了下面是代码

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity" >

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />

</RelativeLayout>

java

package com.example.map;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Application;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

public class MainActivity extends AppCompatActivity {
    MapView mMapView = null;
    BaiduMap mBaiduMap;
    LocationClient mLocClient;
    boolean isFirstLoc = true;
    public MyLocationListenner myListener = new MyLocationListenner();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        mMapView = (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        mBaiduMap.setMyLocationEnabled(true);
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true);
        option.setCoorType("bd09ll");
        mLocClient.start();
    }

    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            if (location == null || mMapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius()).direction(100).latitude(location.getLatitude()).longitude(location.getLatitude()).build();
            mBaiduMap.setMyLocationData(locData);
            if (isFirstLoc) {
                isFirstLoc = false;
                LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }

        public void ReceivePoi(BDLocation poiLocation) {
        }
    }

    @Override
    protected  void onDestroy(){
        super.onDestroy();
        mLocClient.stop();
        mBaiduMap.setBuildingsEnabled(false);
        mMapView.onDestroy();
        mMapView = null;
        super.onDestroy();
    }

    @Override
    protected void onResume(){
        super.onResume();
        mMapView.onResume();
    }

    protected void onPause(){
        super.onPause();
        mMapView.onPause();
    }

}

manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.map">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="com.android.launcher.permission.READ_STTINGS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.GET_TASKS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>

        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="xc35hqt0n9HVqA0TSxnW2L6nqklkWDjQ"/>

        <activity android:name="MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

</application>
</manifest>

最后效果图

猜你喜欢

转载自blog.csdn.net/viafcccy/article/details/86566939