精华内容
下载资源
问答
  • 高德地图集成

    2017-12-13 17:58:50
    高德地图集成和实现 高德地图目前的定位类型有 3 种: LOCATION_TYPE_LOCATE :只在第一次定位移动到地图中心点; LOCATION_TYPE_MAP_FOLLOW :定位,移动到地图中心点并跟随; LOCATION_TYPE_MAP_ROTATE ...


            高德地图的集成和实现


    高德地图目前的定位类型有 3 种:

    LOCATION_TYPE_LOCATE :只在第一次定位移动到地图中心点;

    LOCATION_TYPE_MAP_FOLLOW :定位,移动到地图中心点并跟随;

    LOCATION_TYPE_MAP_ROTATE :定位,移动到地图中心点,跟踪并根据面向方向旋转地图。


    注意它在自己的模拟器上不能定位,要在手机上才能使用定位和旋转,不要忘记开手机上的GPS定位哦


        


    1.如果没有注册过,就先去高德开放平台先去注册,首先在 http://id.amap.com/ 站点注册用户名,密码(如果没有):





    然后创建应用,再生成获取ApiKey

    获取Key 

    如何申请 Key

    1、创建新应用

    进入控制台,创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。


     应用名称可以自己定义



    获取key

     获取key的链接可参考:http://lbs.amap.com/api/android-sdk/guide/create-project/get-key#key。


     


    2、添加新Key

    在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次输入应用名名称,选择绑定的服务为“Android平台SDK”,输入发布版安全码  SHA1、调试版安全码 SHA1、以及 Package,如下图所示:

    需要注意的是: 1个KEY只能用于一个应用(多渠道安装包属于多个应用),1个Key在多个应用上使用会出现服务调用失败。



    在阅读完高德地图API服务条款后,勾选此选项,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了。


    如何获取 SHA1

    调试版本(debug)和发布版本(release)下的 SHA1 值是不同的,发布 apk 时需要根据发布 apk 对应的 keystore 重新配置 Key。

    • 获取调试版本 SHA1 需要根据不同的开发工具,分别参考 通过Eclipse获取SHA1 通过Android Studio获取SHA1
    • 获取发布版本下 SHA1 的方法请参考 使用 keytool(jdk自带工具)获取SHA1


    通过 eclipse 获取 SHA1

    使用 adt 22 以上版本,可以在 eclipse 中直接查看。

    Windows:依次在 eclipse 中打开 Window -> Preferances -> Android -> Build。

    Mac:依次在 eclipse 中打开 Eclipse/ADT->Preferances -> Android -> Build。

    在弹出的 Build 对话框中 “SHA1 fingerprint” 中的值即为 Android 签名证书的 SHA1 值,如下图所示:



    通过Android Studio获取SHA1

    第一步、打开 Android Studio 的 Terminal 工具。

    第二步、输入命令:keytool -v -list -keystore  keystore文件路径。

    第三步、输入 Keystore 密码


    使用 keytool(jdk自带工具)获取 SHA1

    1、运行进入控制台。

    2、在弹出的控制台窗口中输入 cd .android 定位到 .android 文件夹。


    3.继续在控制台输入命令。

    调试版本使用 debug.keystore,命令为:keytool -list -v -keystore debug.keystore。 发布版本使用 apk 对应的 keystore,命令为:keytool -list -v -keystore apk 的  keystore。

    如下所示:


    提示输入密钥库密码,开发模式默认密码是 android,发布模式的密码是为 apk 的 keystore 设置的密码。输入密钥后回车(如果没设置密码,可直接回车),

    此时可在控制台显示的信息中获取 Sha1 值,如下图所示:

    说明:keystore 文件为 Android 签名证书文件。

    如何获取 PackageName

    打开 Android 项目的 AndroidManifest.xml 配置文件,package 属性所对应的内容为应用包名,如下图所示:

    也请检查 build.gradle 文件的 applicationid 属性是否与上文提到的 package 属性一致,如果不一致会导致 INVALID_USER_SCODE,请调整一致。


     


    • 如何申请 Key
    • 如何获取 SHA1
    • 如何获取 PackageName
        获取到key以后就在开始在清单文件里配置

       先在清单文件里加入一些网络权限和Apikey

     

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com..gaodeditu">
    
        <!--允许程序打开网络套接字-->
        <uses-permission android:name="android.permission.INTERNET" />
        <!--允许程序设置内置sd卡的写权限-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!--允许程序获取网络状态-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!--允许程序访问WiFi网络信息-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!--允许程序读写手机状态和身份-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!--用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
        <!--用于访问GPS定位-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
        <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
        <!--用于读取手机当前的状态-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
        <!--用于申请调用A-GPS模块-->
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
        <!--获取运营商信息,用于支持提供运营商信息相关的接口-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <!--用于访问网络,网络定位需要上网-->
        <uses-permission android:name="android.permission.INTERNET" />
        <!--用于读取手机当前的状态-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    	
    
        <meta-data 
    	android:name="com.amap.api.v2.apikey" 
    	android:value="6b273938762bde148d424b5d4bf014fd">//换成您的key
        </meta-data>
        <service android:name="com.amap.api.location.APSService"></service>
    
        <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">
            <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>

    然后在项目的build.gradle里添加依赖

     

     
    defaultConfig {  
             ........  
      
            ndk {  
                //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)  
                abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","arm64-v8a","x86_64"  
            }  
        }  
      
    dependencies {  
           ........  
      
         
        compile 'com.amap.api:3dmap:5.0.0'  
        compile 'com.amap.api:location:3.3.0'  
        compile 'com.amap.api:search:5.0.0'  
      
    }

    然后就开始写activity—main的布局

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <com.amap.api.maps.MapView
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </com.amap.api.maps.MapView>
    
        <TextView
            android:id="@+id/location_errInfo_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|left"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:background="@android:color/holo_red_light"
            android:textColor="@android:color/darker_gray"
            android:text="TextView"
            android:visibility="gone"/>
    
        <RadioGroup
            android:id="@+id/gps_radio_group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top|left"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/holo_orange_light"
            android:orientation="horizontal" >
    
            <RadioButton
                android:id="@+id/gps_locate_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="定位"
                android:textColor="@android:color/black" />
    
            <RadioButton
                android:id="@+id/gps_follow_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="追踪"
                android:textColor="@android:color/black" />
    
            <RadioButton
                android:id="@+id/gps_rotate_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="旋转"
                android:textColor="@android:color/black" />
        </RadioGroup>
    
    </FrameLayout>

    MainActivity

    import android.os.Bundle;
    import android.support.annotation.IdRes;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.view.Window;
    import android.widget.RadioGroup;
    import android.widget.RadioGroup.OnCheckedChangeListener;
    import android.widget.TextView;
    import android.widget.Toast;
    
    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 com.amap.api.maps.AMap;
    import com.amap.api.maps.CameraUpdateFactory;
    import com.amap.api.maps.LocationSource;
    import com.amap.api.maps.MapView;
    import com.amap.api.maps.UiSettings;
    import com.amap.api.maps.model.LatLng;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    public class MainActivity extends AppCompatActivity implements LocationSource, AMapLocationListener,OnCheckedChangeListener{
        private MapView mapView;
        //AMap是地图对象
        private AMap aMap;
        //声明AMapLocationClient类对象,定位发起端
        private AMapLocationClient mLocationClient = null;
        //声明mLocationOption对象,定位参数
        public AMapLocationClientOption mLocationOption = null;
        //声明mListener对象,定位监听器
        private LocationSource.OnLocationChangedListener mListener = null;
        //标识,用于判断是否只显示一次定位信息和用户重新定位
        private boolean isFirstLoc = true;
        private Bundle savedInstanceState;
    
        private RadioGroup mGPSModeGroup;
        private TextView mLocationErrText;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            requestWindowFeature(Window.FEATURE_NO_TITLE);// 不显示程序的标题栏
            setContentView(R.layout.activity_main);
    
            //隐藏标题栏
            ActionBar actionBar=getSupportActionBar();
            actionBar.hide();
            //初始化控件
            initView();
        }
        /**
         * 获取控件
         */
        private void initView() {
            mapView= (MapView) findViewById(R.id.map);
            //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理
            mapView.onCreate(savedInstanceState);
            if (aMap == null) {
                aMap = mapView.getMap();
                //设置显示定位按钮 并且可以点击
                UiSettings settings = aMap.getUiSettings();
                aMap.setLocationSource(this);//设置了定位的监听
                // 是否显示定位按钮
                settings.setMyLocationButtonEnabled(true);
                aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase
            }
    
            //找控件
            mGPSModeGroup = (RadioGroup) findViewById(R.id.gps_radio_group);
            mGPSModeGroup.setOnCheckedChangeListener(this);
            mLocationErrText = (TextView)findViewById(R.id.location_errInfo_text);
            mLocationErrText.setVisibility(View.GONE);
    
            //开始定位
            location();
        }
    
    
        private void location() {
            //初始化定位
            mLocationClient = new AMapLocationClient(getApplicationContext());
            //设置定位回调监听
            mLocationClient.setLocationListener(this);
            //初始化定位参数
            mLocationOption = new AMapLocationClientOption();
            //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
            //设置是否返回地址信息(默认返回地址信息)
            mLocationOption.setNeedAddress(true);
            //设置是否只定位一次,默认为false
            mLocationOption.setOnceLocation(false);
            //设置是否强制刷新WIFI,默认为强制刷新
            mLocationOption.setWifiActiveScan(true);
            //设置是否允许模拟位置,默认为false,不允许模拟位置  true方法开启允许位置模拟
            mLocationOption.setMockEnable(true);
            //设置定位间隔,单位毫秒,默认为2000ms
            mLocationOption.setInterval(2000);
            //给定位客户端对象设置定位参数
            mLocationClient.setLocationOption(mLocationOption);
            //启动定位
            mLocationClient.startLocation();
        }
    
        @Override
        public void activate(OnLocationChangedListener onLocationChangedListener) {
            mListener = onLocationChangedListener;
        }
    
        @Override
        public void deactivate() {
            mListener = null;
        }
    
        /**
         * 定位成功后回调函数
         */
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {
                    //定位成功回调信息,设置相关消息
                    aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
                    aMapLocation.getLatitude();//获取纬度
                    aMapLocation.getLongitude();//获取经度
                    aMapLocation.getAccuracy();//获取精度信息
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date date = new Date(aMapLocation.getTime());
                    df.format(date);//定位时间
                    aMapLocation.getAddress();
      //地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
                    aMapLocation.getCountry();//国家信息
                    aMapLocation.getProvince();//省信息
                    aMapLocation.getCity();//城市信息
                    aMapLocation.getDistrict();//城区信息
                    aMapLocation.getStreet();//街道信息
                    aMapLocation.getStreetNum();//街道门牌号信息
                    aMapLocation.getCityCode();//城市编码
                    aMapLocation.getAdCode();//地区编码
    
                    // 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置
                    if (isFirstLoc) {
                        //设置缩放级别
                        aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
                        //将地图移动到定位点
                        aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
                        //点击定位按钮 能够将地图的中心移动到定位点
                        mListener.onLocationChanged(aMapLocation);
                        //添加图钉
                        //  aMap.addMarker(getMarkerOptions(amapLocation));
                        //获取定位信息
                        StringBuffer buffer = new StringBuffer();
                        buffer.append(aMapLocation.getCountry() + ""
                                + aMapLocation.getProvince() + ""
                                + aMapLocation.getCity() + ""
                                + aMapLocation.getProvince() + ""
                                + aMapLocation.getDistrict() + ""
                                + aMapLocation.getStreet() + ""
                                + aMapLocation.getStreetNum());
                        Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
                        isFirstLoc = false;
                    }
    
    
                } else {
                    //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                    Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();
                }
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
            mapView.onDestroy();
            mLocationClient.stopLocation();//停止定位
            mLocationClient.onDestroy();//销毁定位客户端。
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理
            mapView.onResume();
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理
            mapView.onPause();
        }
    
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理
            mapView.onSaveInstanceState(outState);
        }
    
    
        //监听事件,实现3D旋转
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
            switch (i) {
                case R.id.gps_locate_button:
                    // 设置定位的类型为定位模式
                    aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
                    break;
                case R.id.gps_follow_button:
                    // 设置定位的类型为 跟随模式
                    aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW);
                    break;
                case R.id.gps_rotate_button:
                    // 设置定位的类型为根据地图面向方向旋转
                    aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_ROTATE);
                    break;
            }
    
        }
    }





    展开全文
  • 高德地图集成概要高德地图集成(一):高德地图简单实现由于一开始是接触地图是接触的百度地图所以做项目的也是也会首先选择百度地图。但是自己使用的是高德地图于是想简单集成一下高德地图。以便以后实时应变。高德...

    高德地图集成概要

    高德地图集成(一):高德地图简单实现


    由于一开始是接触地图是接触的百度地图所以做项目的也是也会首先选择百度地图。但是自己使用的是高德地图于是想简单集成一下高德地图。以便以后实时应变。

    高德地图简单实现

    首先在高德地图上创建应用获得应用的Key,下载Jar包,这里不多介绍了。

    就是我们App里面的集成

    libs内放入Jar包,在main下创建jniLibs文件夹放入.so文件


    在 AndroiManifest.xml 中添加权限 并添加Key

        <!-- 地图包、搜索包需要的基础权限 -->
        <!--允许程序打开网络套接字-->
        <uses-permission android:name="android.permission.INTERNET"/>
        <!--允许程序设置内置sd卡的写权限-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <!--允许程序获取网络状态-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <!--允许程序访问WiFi网络信息-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <!--允许程序读写手机状态和身份-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

            <!-- 高德地图 -->
            <meta-data
                android:name="com.amap.api.v2.apikey"
                android:value="25327f0a2dca217529c9f8752b3b35c6"/>

    在写布局并在Activity中添加如下代码就可以显示高德地图了,做到这其实我个人觉得高德比百度简单明了一点

        <com.amap.api.maps.MapView
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    /**
     * 作者:CoolTone
     * 描述:高德集成
     */
    public class MainActivity extends AppCompatActivity {
        private MapView mMapView = null;
        private AMap aMap = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 获取地图控件引用
            mMapView = (MapView) findViewById(R.id.map);
            // 在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
            mMapView.onCreate(savedInstanceState);
            // 初始化地图控制器对象
            if (aMap == null) {
                aMap = mMapView.getMap();
            }
        }
    }





    展开全文
  • Android中第三方SDK集成之高德地图集成指南(Hello GaodeMap显示高德地图简单教程),详细了解请移步http://blog.csdn.net/zxc514257857/article/details/69940712
  • 高德地图集成定位和根据地址搜索经纬度进行定位功能,相关代码 高德地图集成定位和根据地址搜索经纬度进行定位功能,相关代码
  • Android 高德地图集成

    2019-02-28 09:51:15
    集成之前都是需要在高德的开发平台上创建应用的,获取appkey和地图的SDK,这些步骤在之前的高德定位里都有,所以这里就不在重复了 高德定位 先上效果图 项目配置 第一种通过jar包配置 将下载的地图 SDK 的 ...

    在集成之前都是需要在高德的开发平台上创建应用的,获取appkey和地图的SDK,这些步骤在之前的高德定位里都有,所以这里就不在重复了 高德定位

    先上效果图
    在这里插入图片描述

    项目配置

    第一种通过jar包配置

    将下载的地图 SDK 的 jar包复制到工程

    添加 so 库:
    3D地图才需要添加so库,2D地图无需这一步骤。

    导入so文件也有两种方式
    1:在 main 目录下创建文件夹 jniLibs。将下载的SDK里的其他文件夹添加进去。
    在这里插入图片描述

    2:(1)下载文件的 armeabi 文件夹复制到 libs 目录
    (2)在app的build里添加,在android里添加

    sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }
    

    第二种配置
    app的build里添加,在android里defaultConfig里添加

    ndk {
                //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
                abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
            }
    

    依赖

     //3D地图so及jar
        compile 'com.amap.api:3dmap:latest.integration'
        //定位功能
        compile 'com.amap.api:location:latest.integration'
        //搜索功能
        compile 'com.amap.api:search:latest.integration'
    

    在清单文件里添加的

    <meta-data
                android:name="com.amap.api.v2.apikey"
                android:value="请输入您的用户Key"/>
    

    权限

    //地图包、搜索包需要的基础权限
    <!--允许程序打开网络套接字-->
    <uses-permission android:name="android.permission.INTERNET" />  
    <!--允许程序设置内置sd卡的写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
    <!--允许程序获取网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <!--允许程序访问WiFi网络信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <!--允许程序读写手机状态和身份-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />     
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    

    这是activity_main.xml里的布局,里面的mapview就是展示地图的

        <com.amap.api.maps.MapView
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <Button
            android:id="@+id/send_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="标准地图" />
    
        <Button
            android:layout_toRightOf="@id/send_one"
            android:id="@+id/send_two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="导航地图" />
    
        <Button
            android:layout_toRightOf="@id/send_two"
            android:id="@+id/send_three"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="夜景地图" />
    
        <Button
            android:layout_toRightOf="@id/send_three"
            android:id="@+id/send_four"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="卫星地图" />
    
        <Button
            android:layout_below="@id/send_one"
            android:id="@+id/send_five"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="路况图层" />
    </RelativeLayout>
    

    这mainactivity的代码

    public class MainActivity extends AppCompatActivity implements LocationSource, AMapLocationListener, View.OnClickListener {
    
        private MapView map;
        private AMap aMap;
        private MyLocationStyle myLocationStyle;
        OnLocationChangedListener mListener;
        AMapLocationClient mlocationClient;
        AMapLocationClientOption mLocationOption;
        private Button send_one;
        private Button send_two;
        private Button send_three;
        private Button send_four;
        private Button send_five;
        private UiSettings mUiSettings;//定义一个UiSettings对象
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
            //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
            map.onCreate(savedInstanceState);
            //初始化地图控制器对象
            if (aMap == null) {
                aMap = map.getMap();
            }
    
            //小蓝标显示
            // 设置定位监听
            aMap.setLocationSource(MainActivity.this);
    // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
            aMap.setMyLocationEnabled(true);
    // 设置定位的类型为定位模式,有定位、跟随或地图根据面向方向旋转几种
            aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
    
    
            mUiSettings = aMap.getUiSettings();//实例化UiSettings类对象
            mUiSettings.setCompassEnabled(true);//指南针显示
    
            aMap.setLocationSource(this);//通过aMap对象设置定位数据源的监听
    
            mUiSettings.setMyLocationButtonEnabled(true); //显示默认的定位按钮
    
            aMap.setMyLocationEnabled(true);// 可触发定位并显示当前位置
            mUiSettings.setScaleControlsEnabled(true);//控制比例尺控件是否显示
    
    
            LatLng latLng = new LatLng(39.906901,116.397972);
            final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));
    
        }
    
        private void initView() {
            map = (MapView) findViewById(R.id.map);
            send_one = (Button) findViewById(R.id.send_one);
            send_one.setOnClickListener(this);
            send_two = (Button) findViewById(R.id.send_two);
            send_two.setOnClickListener(this);
            send_three = (Button) findViewById(R.id.send_three);
            send_three.setOnClickListener(this);
            send_four = (Button) findViewById(R.id.send_four);
            send_four.setOnClickListener(this);
            send_five = (Button) findViewById(R.id.send_five);
            send_five.setOnClickListener(this);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
            map.onDestroy();
            if (null != mlocationClient) {
                mlocationClient.onDestroy();
            }
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
            map.onResume();
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
            map.onPause();
        }
    
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
            map.onSaveInstanceState(outState);
        }
    
        @Override
        public void activate(OnLocationChangedListener onLocationChangedListener) {
            mListener = onLocationChangedListener;
            if (mlocationClient == null) {
                //初始化定位
                mlocationClient = new AMapLocationClient(this);
                //初始化定位参数
                mLocationOption = new AMapLocationClientOption();
                //设置定位回调监听
                mlocationClient.setLocationListener(this);
                //设置为高精度定位模式
                mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
                //设置定位参数
                mlocationClient.setLocationOption(mLocationOption);
                // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
                // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
                // 在定位结束后,在合适的生命周期调用onDestroy()方法
                // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
                mlocationClient.startLocation();//启动定位
            }
        }
    
        @Override
        public void deactivate() {
            mListener = null;
            if (mlocationClient != null) {
                mlocationClient.stopLocation();
                mlocationClient.onDestroy();
            }
            mlocationClient = null;
        }
    
    
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (mListener != null && aMapLocation != null) {
                if (aMapLocation != null
                        && aMapLocation.getErrorCode() == 0) {
                    mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点
                } else {
                    String errText = "定位失败," + aMapLocation.getErrorCode() + ": " + aMapLocation.getErrorInfo();
                    Log.e("AmapErr", errText);
                }
            }
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.send_one:
                    aMap.setMapType(AMap.MAP_TYPE_NORMAL);//标准地图,aMap是地图控制器对象
                    break;
                case R.id.send_two:
                    aMap.setMapType(AMap.MAP_TYPE_NAVI);//导航地图,aMap是地图控制器对象
                    break;
                case R.id.send_three:
                    aMap.setMapType(AMap.MAP_TYPE_NIGHT);//夜景地图,aMap是地图控制器对象
                    break;
                case R.id.send_four:
                    aMap.setMapType(AMap.MAP_TYPE_SATELLITE);// 设置卫星地图模式,aMap是地图控制器对象
                    break;
                case R.id.send_five:
                    aMap.setTrafficEnabled(true);//显示实时路况图层,aMap是地图控制器对象。
                    break;
            }
        }
    }
    
    展开全文
  • 高德地图 集成错误

    2020-11-14 14:45:03
    注意 是SHA1填写错了,修改下即可

    在这里插入图片描述
    注意
    是SHA1填写错了,修改下即可

    展开全文
  • iOS高德地图集成

    2017-07-12 19:37:21
    首先如果你只引入高德地图那么在申请的Key是没有问题的,只要在AppDelegate中设置 [AMapServicessharedServices].apiKey = key; 然后遇到“[MAMapKit] apiKey为空,请检查key是否正确设置”的打印信息,只要...
  • android 高德地图集成

    2019-02-13 15:36:54
    可参照 ...1.远程依赖 //3D地图so及jar compile 'com.amap.api:3dmap:latest.integration' //定位功能 compile 'com.amap.api:location:latest.integration' //搜索功能 compile 'com.amap...
  • 高德地图开放平台中申请key需要获取sha1值 ,简单方法 打开android studio 点击右侧的gradle 出现 然后点击signingReport就会出现你得SHA1值 就可以去申请key 导入Jar包  创建JniLibs 权限  ...
  • 高德地图集成2

    2018-07-19 09:53:59
     //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态  mMapView.onSaveInstanceState(outState);  } // TODO POI检索 兴趣点检索 搜索功能  //keyWord...
  • 高德地图集成步骤

    2018-01-11 14:05:58
    五,copy高德sdk的Demo的代码 image.png 六,地图页面的代码: public class SecondLocationActivity extends AppCompatActivityimplements LocationSource, AMapLocationListener, PoiSearch.OnPoiSearchListener, ...
  • ![图片说明](https://img-ask.csdn.net/upload/201607/26/1469519940_475303.png) java.lang....Ljava/lang/String;)J ... ...以上是logcat日志,地图部分模块单独运行正常,但是一集成到项目里就会报出上边的错误
  • 新手关于高德地图集成的错误

    千次阅读 2017-10-28 09:29:52
    今天需要对一个项目进行高德地图集成,以前只是看过,没有操作集成过。具体就是参照官网来进行集成:高德文档中心; 然后根据官网集成之后发现出现了错误, Error:Execution failed for task ':gdtext:...
  • 本demo 集成高德地图定位和POI搜索附近位置列表功能,类似于朋友圈当前位置获取;;;:::::
  • 1、使用TextureMapView,在activity各生命周期方法也调用了mapview的生命周期,不显示地图。 需要给当前acitivity开启硬件加速:android:hardwareAccelerated="true"   。。。。。。持续更新...
  • 高德地图集成之基础定位

    千次阅读 2017-06-05 19:42:54
    1、高德官网注册开发者账号并申请Ak 2、下载响应的jar包和so文件,放到app下的libs文件夹 3、build.gradle中配置sourceSets 4、Manifest配置权限和service以及申请的Ak
  • 当将下载的地图 SDK 的 jar包复制到工程的 libs 目录下时,build.gradle(module:app)中的implementation fileTree(dir: ‘libs’, include: [’*.jar’])已完成依赖,不需要再添加关于高德地图implementation。
  • 高德地图: 高德开放平台:https://developer.amap.com/ 集成: 选择开发支持,点击android平台下的,android 地图SDK标签, 可以看到,集成的步骤就在这里了。 1. 获取Key 需要注意的是:调试版本(debug)和发布...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 764
精华内容 305
关键字:

高德地图集成