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

在高德开放平台上下载地图的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());
                    }
                }
            }
        });
    }


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值