地图,定位,切换地图类型

来源:互联网 发布:html5网购商城源码 编辑:程序博客网 时间:2024/06/07 09:57

在高德开放平台上下载地图的sdk和定位的sdk,解压jar包

将.jar文件复制到libs下面,如果是3D地图,需要将在main下面新jniLibs,将.jar文件以外的都复制到jniLibs里面,并且右键add 添加依赖库


清单文件中加入权限

 <!--允许程序打开网络套接字-->    <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>    <!--用于申请获取蓝牙信息进行室内定位-->    <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

application里面

<service android:name="com.amap.api.location.APSService"></service>        <meta-data            android:name="com.amap.api.v2.apikey"            android:value="AppKey值"/>
activity_main

<?xml version="1.0" encoding="utf-8"?><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"    ><LinearLayout    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="1">    <Button        android:text="标准地图"        android:id="@+id/biaozhun"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:text="卫星地图"        android:id="@+id/weixing"        android:layout_width="80dp"        android:layout_height="wrap_content" />    <Button        android:text="夜间模式"        android:id="@+id/yejian"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>    <com.amap.api.maps.MapView        android:id="@+id/map"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="5">    </com.amap.api.maps.MapView>    <TextView        android:layout_width="wrap_content"        android:layout_height="0dp"        android:layout_weight="1"        android:id="@+id/textview"        android:text="Hello World!" /></LinearLayout>

MainActivity

import android.annotation.TargetApi;import android.graphics.BitmapFactory;import android.icu.text.SimpleDateFormat;import android.provider.SyncStateContract;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.ImageView;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 com.amap.api.maps.AMap;import com.amap.api.maps.MapView;import com.amap.api.maps.model.BitmapDescriptorFactory;import com.amap.api.maps.model.LatLng;import com.amap.api.maps.model.Marker;import com.amap.api.maps.model.MarkerOptions;import java.util.Date;public class MainActivity extends AppCompatActivity {    //声明AMapLocationClient类对象    public AMapLocationClient mLocationClient;    private AMap aMap;    //声明AMapLocationClientOption对象    public AMapLocationClientOption aMapLocationClientOption;    private TextView textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);       Button biaozhun = (Button) findViewById(R.id.biaozhun);        Button weixing = (Button) findViewById(R.id.weixing);        Button yejian = (Button) findViewById(R.id.yejian);        textView = (TextView) findViewById(R.id.textview);        //三个按钮的点击事件        biaozhun.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                aMap.setMapType(AMap.MAP_TYPE_NORMAL);//正常模式            }        });        weixing.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                aMap.setMapType(AMap.MAP_TYPE_SATELLITE);//卫星地图模式            }        });        yejian.setOnClickListener(new View.OnClickListener() {                    @Override                 public void onClick(View view) {                   aMap.setMapType(AMap.MAP_TYPE_NIGHT);//夜间模式                    }                });        MapView mapView = (MapView) findViewById(R.id.map);//找到地图控件//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图        mapView.onCreate(savedInstanceState);        //初始化地图控制器对象        aMap = mapView.getMap();        aMap.setMapType(AMap.MAP_TYPE_NORMAL);//正常模式        LatLng latLng = new LatLng(39.906901,116.397972);       final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));        marker.setIcon(BitmapDescriptorFactory.fromBitmap(BitmapFactory                .decodeResource(getResources(),R.mipmap.ic_launcher)));        //-----以上是地图,以下是定位        //设置定位回调监听             Start();    }    public void Start(){        Log.i("----------------","nisadsadasd");        mLocationClient = new AMapLocationClient(getApplicationContext());        aMapLocationClientOption = new AMapLocationClientOption();        aMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);        aMapLocationClientOption.setOnceLocation(true);        aMapLocationClientOption.setOnceLocationLatest(true);        aMapLocationClientOption.setNeedAddress(true);        aMapLocationClientOption.setMockEnable(true);        mLocationClient.setLocationOption(aMapLocationClientOption);        //启动定位        mLocationClient.startLocation();        mLocationClient.setLocationListener(new AMapLocationListener() {            @Override            public void onLocationChanged(AMapLocation aMapLocation) {                if (aMapLocation != null) {                    if (aMapLocation.getErrorCode() == 0) {                      //  textView.setText(aMapLocation.getAddress());                        textView.setText(aMapLocation.getLongitude()+" ,"+aMapLocation.getLatitude());                        Log.i("------------",aMapLocation.getAddress());                    }else {                        //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。                        Log.e("AmapError","location Error, ErrCode:"                                + aMapLocation.getErrorCode() + ", errInfo:"                                + aMapLocation.getErrorInfo());                    }                }            }        });    }}


原创粉丝点击