高德地图经纬度查询方法介绍

图标

豆瓜

豆瓜网

豆瓜网专栏

豆瓜 图标 2021-02-23 01:26:53

首先我们在原来已安装Android的SDK的情况下、我在需要实现高德地图时,需要先做以下功能:




一、引入高德的jar包:这里为方便大家学习、就不用大家自己去下载了,文件已附在后面、需要的话可以自己下载。

首先创建工程,并在工程Build Path>Configure Build Path…>libraries 中选择“Add Externel JARs…”,选定

MapApi.jar,点击OK,这样就可以将高德地图Android API 库文件引入。然后在工程Build Path>Configure Build

Path…>Order and Export 中将引入的库文件MapApi.jar 选中,点击OK,这样您就可以在您的程序中使用高德地图API

了。

二、我们在不熟悉的情况下、先尽量多的添加此软件应用权限;所以在mainifest中添加如下代码;插入的位置在

<application的代码之前。



Java代码  收藏代码

  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>  

  2.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  

  3.     <uses-permission android:name="android.permission.INTERNET"></uses-permission>  

  4.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  

  5.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  

  6.     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  

  7.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  

  8.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  





三、接着就要在res文件下的layout中添加界面布局了。其代码如下、你可以完全复制进去。


Java代码  收藏代码

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:orientation="vertical"  

  4.     android:layout_width="fill_parent"  

  5.     android:layout_height="fill_parent"  

  6.     >  

  7.  <!--添加文本輸入框,查找地址-->  

  8.  <LinearLayout   

  9.     android:layout_height="wrap_content"   

  10.     android:layout_width="wrap_content" android:orientation="horizontal"   

  11.     xmlns:android="http://schemas.android.com/apk/res/android"   

  12.     android:layout_gravity="center_horizontal">  

  13.     <TextView android:layout_height="wrap_content"   

  14.     android:layout_width="wrap_content"   

  15.     android:text="经度"/>  

  16.     <EditText android:layout_height="fill_parent"   

  17.     android:layout_width="100px"   

  18.     android:id="@+id/longitude"/>  

  19.     <TextView android:layout_height="wrap_content"   

  20.     android:layout_width="wrap_content"   

  21.     android:text="纬度"/>  

  22.     <EditText android:layout_height="fill_parent"   

  23.     android:layout_width="100px"   

  24.     android:id="@+id/latitude"/>  

  25.     <Button android:layout_width="wrap_content"  

  26.     android:layout_height="wrap_content"  

  27.     android:text="查找"  

  28.     android:id="@+id/button"/>  

  29.     </LinearLayout>     

  30.     

  31.    <com.amap.mapapi.map.MapView android:id="@+id/mapView"    

  32. android:layout_width="fill_parent" android:layout_height="fill_parent"     

  33. android:clickable="true"       

  34. />   

  35. </LinearLayout>  




四、最后就是软件的主程序部分了、里面需要的类和方法不多,主要以按钮的监听器和地图的界面实现为主


Java代码  收藏代码

  1. public void onCreate(Bundle savedInstanceState) {  

  2.         // this.setMapMode(MAP_MODE_VECTOR);//设置地图为矢量模式  

  3.   

  4.         super.onCreate(savedInstanceState);  

  5.         setContentView(R.layout.main);  

  6.   

  7.         mMapView = (MapView) findViewById(R.id.mapView);  

  8.         mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件  

  9.         mMapController = mMapView.getController(); // 得到mMapView  

  10.                                                     // 的控制权,可以用它控制和驱动平移和缩放  

  11.         point = new GeoPoint((int) (39.982378 * 1E6), (int) (116.304923 * 1E6)); // 用给定的经纬度构造一个GeoPoint,单位是微度(度*  

  12.                                                                                     // 1E6)  

  13.         // 按钮添加监听器  

  14.         button_location = (Button) findViewById(R.id.location);  

  15.         longitude = (EditText) findViewById(R.id.longitude);  

  16.         latidute = (EditText) findViewById(R.id.latitude);  

  17.         locationListener = new OnClickListener() {  

  18.             public void onClick(View e) {  

  19.                 if (e.equals(button_location)) {  

  20.                     // 得到文本输入框的中经纬 度坐标值  

  21.                     String latStr = longitude.getText().toString();  

  22.                     // 将得到的字符串转成数值  

  23.                     double lat = Integer.parseInt(latStr);  

  24.                     String lngStr = latidute.getText().toString();  

  25.                     double lng = Integer.parseInt(lngStr);  

  26.                     //转成经纬度坐标  

  27.                     lat=lat*1E6;  

  28.                     lng=lng*1E6;  

  29.                         // 用给定的经纬度构造一个GeoPoint,单位是微度(度*1E6)  

  30.                         point = new GeoPoint((int) (lat), (int) (lng));  

  31.                         mMapController.setCenter(point); // 设置地图中心点  

  32.                         mMapController.setZoom(12); // 设置地图zoom 级别  

  33.                         // 添加地图覆盖物  

  34. //                      MyLocationOverlay(this, mMapView);  

  35.                         mylocTest.enableMyLocation(); // 判断是否发现位置提供者  

  36.                         mylocTest.enableCompass(); // 打开指南针  

  37.                         mMapView.getOverlays().add(mylocTest);// 添加定位覆盖物  

  38.                     }  

  39.                 }  

  40.         };  

  41.         // 按钮添加监听器  

  42.         button_location.setOnClickListener(locationListener);  

  43.         mMapController.setCenter(point); // 设置地图中心点  

  44.         mMapController.setZoom(12); // 设置地图zoom 级别  

  45.         // 添加地图覆盖物  

  46.         mylocTest = new MyLocationOverlay(this, mMapView);  

  47.         mylocTest.enableMyLocation(); // 判断是否发现位置提供者  

  48.         mylocTest.enableCompass(); // 打开指南针  

  49.         mMapView.getOverlays().add(mylocTest);// 添加定位覆盖物  

  50.     }  

  51. //另外一个添加界面覆盖物的类:  

  52.   

  53. public class MyLocationOverlayProxy extends com.amap.mapapi.map.MyLocationOverlay{  

  54.   

  55.     private Location mLocation;  

  56.      protected final Paint mPaint = new Paint();  

  57.      protected final Paint mCirclePaint = new Paint();  

  58.      private Bitmap gps_marker=null;  

  59.      private Point mMapCoords = new Point();  

  60.      private final float gps_marker_CENTER_X;  

  61.      private final float gps_marker_CENTER_Y;  

  62.      private final LinkedList<Runnable> mRunOnFirstFix = new LinkedList<Runnable>();  

  63.     public MyLocationOverlayProxy(amap amap, MapView mMapView) {  

  64.   

  65.         super(amap, mMapView);  

  66.         gps_marker = ((BitmapDrawable) amap.getResources().getDrawable(  

  67.                 R.drawable.marker_gpsvalid)).getBitmap();  

  68.         gps_marker_CENTER_X = gps_marker.getWidth() / 2 - 0.5f;  

  69.         gps_marker_CENTER_Y= gps_marker.getHeight() / 2 - 0.5f;  

  70.     }  

  71.       

  72.     public boolean runOnFirstFix(final Runnable runnable) {  

  73.         if (mLocation != null) {  

  74.             new Thread(runnable).start();  

  75.             return true;  

  76.         } else {  

  77.             mRunOnFirstFix.addLast(runnable);  

  78.             return false;  

  79.         }  

  80.     }  

  81.       

  82.     public void onLocationChanged(Location location) {  

  83.         // TODO Auto-generated method stub    

  84.         mLocation = location;  

  85.         for(final Runnable runnable : mRunOnFirstFix) {  

  86.             new Thread(runnable).start();  

  87.         }  

  88.         mRunOnFirstFix.clear();  

  89.         super.onLocationChanged(location);  

  90.     }  

  91.       

  92.     protected void drawMyLocation(Canvas canvas,  MapView mapView, final Location mLocation,  

  93.             GeoPoint point, long time) {  

  94.         Projection pj=mapView.getProjection();  

  95.         if (mLocation != null) {  

  96.                 mMapCoords=pj.toPixels(point, null);  

  97.                 final float radius = pj.metersToEquatorPixels(mLocation.getAccuracy());   

  98.                 this.mCirclePaint.setAntiAlias(true);  

  99.                 this.mCirclePaint.setARGB(35, 131, 182, 222);  

  100.                 this.mCirclePaint.setAlpha(50);  

  101.                 this.mCirclePaint.setStyle(Style.FILL);  

  102.                 canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);  

  103.                 this.mCirclePaint.setARGB(225, 131, 182, 222);  

  104.                 this.mCirclePaint.setAlpha(150);  

  105.                 this.mCirclePaint.setStyle(Style.STROKE);  

  106.                 canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);                 

  107.                 canvas.drawBitmap(gps_marker, mMapCoords.x-gps_marker_CENTER_X, mMapCoords.y-gps_marker_CENTER_Y, this.mPaint);  

  108.         }  

  109.   }  

  110.   

  111. }  




最后


[img]




本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

图标 图标

豆瓜

豆瓜网

豆瓜网专栏

全部评论

豆瓜

豆瓜网

豆瓜网专栏

  • 智能二轮平衡车哪个好
  • 波轮洗衣机推荐几款
  • 苏格拉底式提问6步是什么
  • 怎么写工作流程范文
  • 银行理财排行榜前十名有哪些
  • 我来说两句