版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/51375159
和其他地图一样,都要先去官网注册成为开发者,然后获取Key。下面直接上代码。
效果图:
package com.example.gaodemap;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class MainActivity extends Activity {
private MapView mMapView;
private AMap aMap;
private MapView mapView;
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mMapView = (MapView) findViewById(R.id.map);
mMapView.onCreate(savedInstanceState);
init();
//GPRS提供的定位信息改变
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 300, 8, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// 使用GPRS提供的定位信息来更新位置
updatePosition(locationManager.getLastKnownLocation(provider));
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
updatePosition(location);
}
});
ToggleButton tb = (ToggleButton) findViewById(R.id.tb);
tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
}else{
aMap.setMapType(AMap.MAP_TYPE_NORMAL);
}
}
});
}
//初始化AMap对象
private void init(){
if(aMap == null){
aMap = mMapView.getMap();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mMapView.onPause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
mMapView.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);
}
private void updatePosition(Location location){
LatLng pos = new LatLng(location.getLatitude(), location.getLongitude());
//创建一个设置经纬度的CameraUpdate
CameraUpdate cu = CameraUpdateFactory.changeLatLng(pos);
//更新地图的显示区域
aMap.moveCamera(cu);
//清除所有的Marker等覆盖物
aMap.clear();
//创建一个MarkerOptions对象
MarkerOptions markOptions = new MarkerOptions();
markOptions.position(pos);
//添加MarkerOptions(实际上是添加Marker)
Marker marker = aMap.addMarker(markOptions);
}
}
<?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"
>
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>
<ToggleButton
android:id="@+id/tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="top|right"
android:textOff="普通地图"
android:textOn="卫星地图"
android:checked="false"
android:background="@android:color/transparent"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="horizontal"
>
<Button
android:id="@+id/near"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="附近"
android:layout_weight="1"
android:background="@android:color/transparent"
/>
<Button
android:id="@+id/route"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="路线"
android:background="@android:color/transparent"
android:layout_weight="1"
/>
<Button
android:id="@+id/my"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的"
android:background="@android:color/transparent"
android:layout_weight="1"
/>
</LinearLayout>
</FrameLayout>