編輯:關於Android編程
和其他地圖一樣,都要先去官網注冊成為開發者,然後獲取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); } }
<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><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><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"></button></linearlayout></togglebutton></framelayout>
Android App 內存洩露之Handler Handler也是造成內存洩露的一個重要的源頭,主要Handler屬於TLS(Thread Local Storage
public class MainFragmentPagerAdapter extends FragmentPagerAdapter implement
在之前的博客中已經為大家介紹了,如何在win環境下配置DNK程序,本篇我將帶大家實現一個簡單的Hello jni程序,讓大家真正感受一下NDK開發的魅力。這裡我們選擇使用
把Android SDK升級到了最新版本,但是Eclipse的ADT插件需要Eclipse3.6版本以上才可以安裝,無奈下載了Eclipse3.7版本的。一