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

[/size]
[size=large]

一、引入高德的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的代码之前。

[/size]

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>   <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

[size=large]

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

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    > <!--添加文本輸入框,查找地址--> <LinearLayout     android:layout_height="wrap_content"     android:layout_width="wrap_content" android:orientation="horizontal"     xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_gravity="center_horizontal">    <TextView android:layout_height="wrap_content"     android:layout_width="wrap_content"     android:text="经度"/>    <EditText android:layout_height="fill_parent"     android:layout_width="100px"     android:id="@+id/longitude"/>    <TextView android:layout_height="wrap_content"     android:layout_width="wrap_content"     android:text="纬度"/>    <EditText android:layout_height="fill_parent"     android:layout_width="100px"     android:id="@+id/latitude"/>    <Button android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="查找"    android:id="@+id/button"/>    </LinearLayout>   

   <com.amap.mapapi.map.MapView android:id="@+id/mapView"  android:layout_width="fill_parent" android:layout_height="fill_parent"   android:clickable="true"     /> </LinearLayout>

[size=large]

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



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                                                 // 的控制权,可以用它控制和驱动平移和缩放        point = new GeoPoint((int) (39.982378 * 1E6), (int) (116.304923 * 1E6)); // 用给定的经纬度构造一个GeoPoint,单位是微度(度*                                                                                  // 1E6)       // 按钮添加监听器        button_location = (Button) findViewById(R.id.location);      longitude = (EditText) findViewById(R.id.longitude);     latidute = (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 = latidute.getText().toString();                   double lng = Integer.parseInt(lngStr);                   //转成经纬度坐标                 lat=lat*1E6;                 lng=lng*1E6;                     // 用给定的经纬度构造一个GeoPoint,单位是微度(度*1E6)                        point = new GeoPoint((int) (lat), (int) (lng));                      mMapController.setCenter(point); // 设置地图中心点                       mMapController.setZoom(12); // 设置地图zoom 级别                        // 添加地图覆盖物//                      MyLocationOverlay(this, mMapView);                        mylocTest.enableMyLocation(); // 判断是否发现位置提供者                      mylocTest.enableCompass(); // 打开指南针                       mMapView.getOverlays().add(mylocTest);// 添加定位覆盖物                  }             }     };        // 按钮添加监听器        button_location.setOnClickListener(locationListener);     mMapController.setCenter(point); // 设置地图中心点       mMapController.setZoom(12); // 设置地图zoom 级别        // 添加地图覆盖物        mylocTest = new MyLocationOverlay(this, mMapView);       mylocTest.enableMyLocation(); // 判断是否发现位置提供者      mylocTest.enableCompass(); // 打开指南针       mMapView.getOverlays().add(mylocTest);// 添加定位覆盖物  }//另外一个添加界面覆盖物的类:

public class MyLocationOverlayProxy extends com.amap.mapapi.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 point, long time) {      Projection pj=mapView.getProjection();        if (mLocation != null) {                mMapCoords=pj.toPixels(point, 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);       }  }

}

[size=large]
最后
[/size]

[img]

[img]http://dl.iteye.com/upload/attachment/0075/7299/342d991c-566a-34e4-a812-b03d7a7a2cd5.png[/img]

[img]http://dl.iteye.com/upload/attachment/0075/7297/0ea3228d-1c07-3f8f-a15f-2ae14e8c652c.png[/img]

[/img]

[img]

[/img]

高德地图——输入经纬度查找相关推荐

  1. vue中引用高德地图根据经纬度计算两地距离

    vue中引用高德地图根据经纬度计算两地距离 一.示例图: npm安装 npm install vue-amap --save 在min.js文件中引入vue-amap import VueAMap f ...

  2. laravel8 使用高德地图查询经纬度(输入地名获取经纬度)

    高德地图开放平台:https://lbs.amap.com/ 注:需要注册成为开发者,注册成功后就可以使用此开放平台 注册成功后,登录开发放平台,进入后台 需要创建一个新的应用 创建应用成功后,需要添 ...

  3. Vue 高德地图 输入提示和POI搜索插件结合使用 拾取对应地点坐标

    1.准备好高德地图的key和安全密钥jscode,key的平台类型是Web 端 ( JSAPI ). 2.注意:自2021年12月02日升级,升级之后所申请的 key 必须配备安全密钥 jscode  ...

  4. android高德地图设置经纬度,安卓高德地图开发自定义线路规划(按着自己定义的经纬度规划线路)...

    [实例简介] 自定义地图的线路规划问题,代码可以直接的借用,方便大家学习 [实例截图] [核心代码] (YN)安卓高德地图自定义线路规划(按着指定的经纬度规划线路) └── YnGaoDeThreeM ...

  5. android 接百度SDK遇到的坑(百度地图BD09经纬度转高德地图GCJ02经纬度)

    百度转高德==> /*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌.高德** @param latLng* @returns*/public s ...

  6. 使用高德地图做经纬度转换( 把GPS 转高德的经纬度 )

    高德开发平台 JS API 官网 自定义经纬度转换 // 要先在页面中引入 WGS84_to_GCJ02.js 才能使用 WGS84_to_GCJ02() 方法 function GPSchange( ...

  7. Ptyhon 入门:通过高德地图获取经纬度

    #1.引入包 import json import requests#2.通过高德接口获取经纬度 addr='地址' def gd_map(a):para = {'key': '高德key', # 高 ...

  8. Java 根据高德地图获取经纬度坐标

    1: 申请高德服务key /*** @param addressName* @param cityName* @Description 根据高德地图, 通过地址获取经纬度坐标* @Throws* @R ...

  9. 高德地图-根据经纬度获取地址(逆地理编码)

    1.需要资源: 高德地图搜索SDK以及相关SDk下载地址 2.根据经纬度得到具体地址: 1.这里需要用到地图搜索SDK: 2.通过逆地理编码来实现. 3.示例代码: @Overrideprotecte ...

  10. 高德地图根据经纬度调用api报错Uncaught Error: USERKEY_PLAT_NOMATCH(10009)

    一.翻车现场: 根据经纬度调用高德地图api获取相应信息的时候,报错 Uncaught Error: USERKEY_PLAT_NOMATCH(10009) 二.解决方案: 经过排查发现,是高德中的k ...

最新文章

  1. WiFi已攻占世界 芯片原厂、模组方案商盘点
  2. WinAPI: waveInUnprepareHeader - 清除由 waveInPrepareHeader 完成的准备
  3. java类似sizeof_如何用Java编写类似C的Sizeof函数
  4. Spark Structured Kudu : RejectedExecutionException: Worker has already been shutdown
  5. 【Java并发编程】16、ReentrantReadWriteLock源码分析
  6. Java基础学习总结(172)——手写Java 重试机制
  7. Google全新AI实战课发布:从原理到代码,手把手带你入门机器学习
  8. android usb软件自动安装监控,Android中监控USB的插拔
  9. 7种提高工作效率的Vim操作
  10. CATIA二次开发VBA:(一)宏的录制、修改及回放
  11. 讯飞tts语音引擎_讯飞iFLYOS语音让家居产品更智能
  12. 简单易懂,过程详述大整数进制转换
  13. Elasticsearch 7.X 中文分词器 ik 使用,及词库的动态扩展
  14. iPad当Linux电脑显示器,效率App:让iPad变成你电脑的第二显示屏,相当实用!
  15. [work] 什么是对抗攻击
  16. weblogic10 下载
  17. java中extends与implements的区别
  18. Java语言编写计算器
  19. javaWeb中 servlet 、request 、response
  20. CTFshow_萌新(隐写)

热门文章

  1. 【HAVENT原创】CentOS 下 nginx 配置和启动
  2. CAD2008中常用快捷命令
  3. 计算机如何使用键盘复制粘贴,电脑复制粘贴快捷键,手把手教你电脑怎么用键盘复制粘贴...
  4. 表格里加横线一分为二_Word2010表格分割线一分为二斜线
  5. Linux基础命令:awk
  6. 计算机二级显示用户不存在,计算机二级考试最常见的错误集合
  7. python浪漫代码表白npy_【交大表白墙】表白dxy小姐姐,十里春风不如你,三里桃花不及卿,要每天开心哦!...
  8. 有监督机器学习训练流程---人工智能工作笔记0015
  9. python问卷星微信登录_Python填写问卷星
  10. css选择文件的图片大小,怎么用css设置图片大小