花次元
二、我們在不熟悉的情況下、先盡量多的添加此軟件應用權限;所以在mainifest中添加如下代碼;插入的位置在 <application的代碼之前。 Java代碼 <uses-permission :name=".permission.ACCESS_COARSE_LOCATION"></uses-permission> <uses-permission :name=".permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission :name=".permission.INTERNET"></uses-permission> <uses-permission :name=".permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission :name=".permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission :name=".permission.READ_PHONE_STATE"></uses-permission> <uses-permission :name=".permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission :name=".permission.ACCESS_WIFI_STATE"></uses-permission>
三、接著就要在res文件下的layout中添加界面布局了。其代碼如下、你可以完全復制進去。 Java代碼 <?xml version="
1.0" encoding="utf-8"?> <LinearLayout xmlns:="鏈接" :orientation="vertical" :layout_width="fill_parent" :layout_height="fill_parent" > <!--添加文本輸入框,查找地址--> <LinearLayout :layout_height="wrap_content" :layout_width="wrap_content" :orientation="horizontal" xmlns:="鏈接" :layout_gravity="center_horizontal"> <TextView :layout_height="wrap_content" :layout_width="wrap_content" :text="經度"/> <EditText :layout_height="fill_parent" :layout_width="100px" :id="@+id/longitude"/> <TextView :layout_height="wrap_content" :layout_width="wrap_content" :text="緯度"/> <EditText :layout_height="fill_parent" :layout_width="100px" :id="@+id/latitude"/> <Button :layout_width="wrap_content" :layout_height="wrap_content" :text="查找" :id="@+id/button"/> </LinearLayout> <com.amap.map.map.MapView :id="@+id/mapView" :layout_width="fill_parent" :layout_height="fill_parent" :clickable="true" /> </LinearLayout>
四、最后就是軟件的主程序部分了、里面需要的類和方法不多,主要以按鈕的監聽器和地圖的界面實現為主 Java代碼 public void onCreate(Bundle savedInstanceState) { // this.setMapMode(MAP_MODE_VECTOR);//設置地圖為矢量模式 super.onCreate(savedInstanceState); setContentView(R.layout.main); mMapView = (MapView) findViewById(R.id.mapView); mMapView.setBuiltInZoomControls(true); // 設置啟用內置的縮放控件 mMapController = mMapView.getController(); // 得到mMapView // 的控制權,可以用它控制和驅動平移和縮放 nt = new GeoPoint((int) (3
9.982378 * 1E6), (int) (11
6.304923 * 1E6)); // 用給定的經緯度構造一個GeoPoint,單位是微度(度* // 1E6) // 按鈕添加監聽器 button_location = (Button) findViewById(R.id.location); longitude = (EditText) findViewById(R.id.longitude); latite = (EditText) findViewById(R.id.latitude); locationListener = new OnClickListener() { public void onClick(View e) { if (e.equals(button_location)) { // 得到文本輸入框的中經緯 度坐標值 String latStr = longitude.getText().toString(); // 將得到的字符串轉成數值 double lat = Integer.parseInt(latStr); String lngStr = latite.getText().toString(); double lng = Integer.parseInt(lngStr); //轉成經緯度坐標 lat=lat*1E6; lng=lng*1E6; // 用給定的經緯度構造一個GeoPoint,單位是微度(度*1E6) nt = new GeoPoint((int) (lat), (int) (lng)); mMapController.setCenter(nt); // 設置地圖中心點 mMapController.setZoom(12); // 設置地圖zoom 級別 // 添加地圖覆蓋物 // MyLocationOverlay(this, mMapView); mylocTest.enableMyLocation(); // 判斷是否發現位置提供者 mylocTest.enableCompass(); // 打開指南針 mMapView.getOverlays().add(mylocTest);// 添加標注覆蓋物 } } }; // 按鈕添加監聽器 button_location.setOnClickListener(locationListener); mMapController.setCenter(nt); // 設置地圖中心點 mMapController.setZoom(12); // 設置地圖zoom 級別 // 添加地圖覆蓋物 mylocTest = new MyLocationOverlay(this, mMapView); mylocTest.enableMyLocation(); // 判斷是否發現位置提供者 mylocTest.enableCompass(); // 打開指南針 mMapView.getOverlays().add(mylocTest);// 添加標注覆蓋物 } //另外一個添加界面覆蓋物的類: public class MyLocationOverlayProxy extends com.amap.map.map.MyLocationOverlay{ private Location mLocation; protected final Paint mPaint = new Paint(); protected final Paint mCirclePaint = new Paint(); private Bitmap gps_marker=null; private Point mMapCoords = new Point(); private final float gps_marker_CENTER_X; private final float gps_marker_CENTER_Y; private final LinkedList<Runnable> mRunOnFirstFix = new LinkedList<Runnable>(); public MyLocationOverlayProxy(amap amap, MapView mMapView) { super(amap, mMapView); gps_marker = ((BitmapDrawable) amap.getResources().getDrawable( R.drawable.marker_gpsvalid)).getBitmap(); gps_marker_CENTER_X = gps_marker.getWidth() / 2 - 0.5f; gps_marker_CENTER_Y= gps_marker.getHeight() / 2 - 0.5f; } public boolean runOnFirstFix(final Runnable runnable) { if (mLocation != null) { new Thread(runnable).start(); return true; } else { mRunOnFirstFix.addLast(runnable); return false; } } public void onLocationChanged(Location location) { // TODO Auto-generated method stub mLocation = location; for(final Runnable runnable : mRunOnFirstFix) { new Thread(runnable).start(); } mRunOnFirstFix.clear(); super.onLocationChanged(location); } protected void drawMyLocation(Canvas canvas, MapView mapView, final Location mLocation, GeoPoint nt, long time) { Projection pj=mapView.getProjection(); if (mLocation != null) { mMapCoords=pj.toPixels(nt, null); final float radius = pj.metersToEquatorPixels(mLocation.getAccuracy()); this.mCirclePaint.setAntiAlias(true); this.mCirclePaint.setARGB(35, 131, 182, 222); this.mCirclePaint.setAlpha(50); this.mCirclePaint.setStyle(Style.FILL); canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint); this.mCirclePaint.setARGB(225, 131, 182, 222); this.mCirclePaint.setAlpha(150); this.mCirclePaint.setStyle(Style.STROKE); canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint); canvas.drawBitmap(gps_marker, mMapCoords.x-gps_marker_CENTER_X, mMapCoords.y-gps_marker_CENTER_Y, this.mPaint); } } }
autoMan
2021-09-23 17:40:38 896查看 1回答
2021-09-23 17:40:46 892查看 0回答
?_?
2021-09-23 17:41:39 1142查看 2回答
美麗人生
2021-09-23 17:41:39 1117查看 2回答
渺茫
2021-09-23 17:42:13 376查看 1回答
天上下yu
2021-09-23 17:42:25 810查看 1回答
花次元
2021-09-23 17:42:33 468查看 2回答
2021-09-23 17:43:21 467查看 0回答
薄荷糖
2021-09-23 17:43:34 458查看 2回答