本文只是开发小笔记(关键步骤详见其它略讲),有任何不懂的问题可以留言,我必为大家解答以及分享更有用的经验。

高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包)

链接:http://pan.baidu.com/s/1eR8Nchc 密码:be1v

其中armeabi这个文件夹和其他4个jar是必要导入的,另外两个文件夹确保兼容性。

①首先登陆高德lbs开放平台获取Key,下面是官方详细教程:

http://lbs.amap.com/dev/ticket#/faqcat/1

(本人使用的是eclipse,所以获取安全码SHA1的方法为Windows->preferences->android->build,如下图所示的SHA1 fingerprint)

然后你要设置你所开发的app的包,即在下面的Package中输入你的app包名(这点不能输错)

②申请到key之后,修改安卓项目的AndroidManifest.xml文件,即获取相关的权限和导入key(才能正常启动高德地图)

11个<uses-permission....>就是相关权限的设置,把代码写进去

还有加一个<meta-data....>把你的key导入进去,需要记住android:name="com.amap.api.v2.apikey"

下面的代码都是调试所用,所有信息都将在logcat栏目里面显示。

③进行定位:

package (你的包名);import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.LocationManagerProxy;
import com.amap.api.location.LocationProviderProxy;
import com.amap.api.maps.model.MyLocationStyle;import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;public class MainActivity extends Activity implements AMapLocationListener {LocationManagerProxy mLocationManagerProxy;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mLocationManagerProxy=LocationManagerProxy.getInstance(this);mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 2000, 15, this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Override
protected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();mLocationManagerProxy.destroy();
}@Overridepublic void onLocationChanged(AMapLocation arg0) {// TODO Auto-generated method stubif(arg0!=null&&arg0.getAMapException().getErrorCode()==0){Log.i("helloworld", arg0.toString());}}

④开发电子围栏(也就是设置一个点,可以设置半径,可以监控自己的位置是在圈内还是圈外)

 package (你的包名);import com.amap.api.maps.AMap.OnMapClickListener;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.LocationManagerProxy;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.CircleOptions;
import com.amap.api.maps.model.LatLng;import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;public class GeoFenceActivity extends Activity implements OnMapClickListener,AMapLocationListener{LocationManagerProxy mLocationManagerProxy;MapView mapView;String GEOFENCE_BROADCAST_ACTION="com.example.helloworld";PendingIntent mPendingIntent;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mLocationManagerProxy=LocationManagerProxy.getInstance(this);mapView=(MapView)findViewById(R.id.main_mapView);mapView.onCreate(savedInstanceState);mapView.getMap().setOnMapClickListener(this);Intent intent=new Intent(GEOFENCE_BROADCAST_ACTION);mPendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);IntentFilter intentfilter=new IntentFilter();intentfilter.addAction(GEOFENCE_BROADCAST_ACTION);this.registerReceiver(mGeoFenceReceiver, intentfilter);mLocationManagerProxy.requestLocationData(LocationManager.GPS_PROVIDER,2000,15, this);}private BroadcastReceiver mGeoFenceReceiver=new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubLog.e("helloworld", "收到广播");int i= intent.getIntExtra("status", -1);if(i==1){Log.e("helloworld", "在地理围栏内部");}if(i==0){Log.e("helloworld", "在地理围栏外部");}}};@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();mapView.onResume();}
@Override
protected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();
}
@Override
public void onMapClick(LatLng arg0) {// TODO Auto-generated method stubLog.e("helloworld", "lat ="+arg0.latitude);Log.e("helloworld", "lon ="+arg0.longitude);mapView.getMap().addCircle(new CircleOptions().center(arg0).radius(1000));mLocationManagerProxy.addGeoFenceAlert(arg0.latitude, arg0.longitude, 1000, 1000*60*30, mPendingIntent);
}
@Override
public void onLocationChanged(Location location) {// TODO Auto-generated method stub}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}
@Override
public void onProviderEnabled(String provider) {// TODO Auto-generated method stub}
@Override
public void onProviderDisabled(String provider) {// TODO Auto-generated method stub}
@Override
public void onLocationChanged(AMapLocation arg0) {// TODO Auto-generated method stub}
}

⑤天气预报(现在或未来的):

package (你的包名);import java.util.List;import com.amap.api.location.AMapLocalDayWeatherForecast;
import com.amap.api.location.AMapLocalWeatherForecast;
import com.amap.api.location.AMapLocalWeatherListener;
import com.amap.api.location.AMapLocalWeatherLive;
import com.amap.api.location.LocationManagerProxy;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;public class WeatherActivity extends Activity implements AMapLocalWeatherListener{
LocationManagerProxy mLocationManagerProxy;@Override
protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mLocationManagerProxy=LocationManagerProxy.getInstance(this);mLocationManagerProxy.requestWeatherUpdates(LocationManagerProxy.WEATHER_TYPE_FORECAST,this);
}
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}
@Override
public void onWeatherForecaseSearched(AMapLocalWeatherForecast arg0) {// TODO Auto-generated method stub//未来天气
List<AMapLocalDayWeatherForecast> list=arg0.getWeatherForecast();
for(int i=0;i<list.size();i++){AMapLocalDayWeatherForecast dayweather=list.get(i);Log.i("helloworld", "城市"+dayweather.getCity());Log.i("helloworld", "时间"+dayweather.getDate());Log.i("helloworld", "温度"+dayweather.getDayTemp());Log.i("helloworld", "风力"+dayweather.getDayWindPower());
}
}
@Override
public void onWeatherLiveSearched(AMapLocalWeatherLive arg0) {// TODO Auto-generated method stub//当天天气Log.i("helloworld", "城市"+arg0.getCity());Log.i("helloworld", "湿度"+arg0.getHumidity());Log.i("helloworld", "风力"+arg0.getWindPower());
}
}

⑥轨迹记录(这里是有模拟轨迹数据,如果是真正的设备的话可以把每次定位的数据放入容器中再读取轨迹)

package com.example.maptest;import java.util.ArrayList;
import java.util.List;import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap.OnMapLoadedListener;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.PolygonOptions;import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.os.Trace;public class TrackActivity extends Activity implements OnMapLoadedListener{
MapView mapview;
double Trace[]={40.03833763826341,116.44161604271481,40.038120,116.441789,40.0378823754,116.441780,40.037589,116.441768,40.03744051,116.44175,40.036884,116.441722,40.03663242,116.441705466};
List<LatLng>list;
@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mapview=(MapView)findViewById(R.id.main_mapView);mapview.onCreate(savedInstanceState);mapview.getMap().setOnMapLoadedListener(this);list=new ArrayList<LatLng>();for(int i=0;i<Trace.length-1;i++){LatLng latlng=new LatLng(Trace[i], Trace[++i]);list.add(latlng);}
}
@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();mapview.onResume();
}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic void onMapLoaded() {// TODO Auto-generated method stubmapview.getMap().addPolygon(new PolygonOptions().addAll(list));}}

⑦搜索周边位置(以下例子是将搜索范围确定在“杨小贤”,“餐饮”,“广州市”)并且是以自己所在大学城位置为中心半径为200000m范围内搜索:

package (你的包名);import java.util.List;import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.LocationManagerProxy;
import com.amap.api.location.LocationProviderProxy;
import com.amap.api.maps.MapView;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.poisearch.PoiItemDetail;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;
import com.amap.api.services.poisearch.PoiSearch.SearchBound;import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class SearchActivity extends Activity implements AMapLocationListener,OnPoiSearchListener,OnClickListener {LocationManagerProxy mLocationManagerProxy;MapView mapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mapView=(MapView)findViewById(R.id.main_mapView);mapView.onCreate(savedInstanceState);mLocationManagerProxy=LocationManagerProxy.getInstance(this);mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 2000, 15, this);Button button=(Button)findViewById(R.id.button);button.setOnClickListener(this);}@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Override
protected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();
}@Override
protected void onResume() {// TODO Auto-generated method stubsuper.onResume();
}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}
AMapLocation location;@Overridepublic void onLocationChanged(AMapLocation arg0) {// TODO Auto-generated method stublocation=arg0;Log.e("helloworld", arg0.toString());}@Overridepublic void onPoiItemDetailSearched(PoiItemDetail arg0, int arg1) {// TODO Auto-generated method stub}@Overridepublic void onPoiSearched(PoiResult arg0, int arg1) {// TODO Auto-generated method stubif(arg1==0){List<PoiItem>list=arg0.getPois();for(int i=0;i<list.size();i++){PoiItem item=list.get(i);Log.e("helloworld", item.toString());}}}public void search(){PoiSearch.Query query=new PoiSearch.Query("杨小贤", "餐饮", "广州市");query.setPageSize(10);//每页显示多少个poiitemquery.setPageNum(0);PoiSearch poiSearch=new PoiSearch(this, query);poiSearch.setOnPoiSearchListener(this);LatLonPoint poinot=new LatLonPoint(location.getLatitude(), location.getLongitude());poiSearch.setBound(new SearchBound(poinot, 200000, true));poiSearch.searchPOIAsyn();}
@Override
public void onClick(View v) {// TODO Auto-generated method stubsearch();
}
}

安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)相关推荐

  1. 利用高德地图api进行定位

    一.精准定位,需要https,需要用户手动同意. 在初次进入时进行定位,定位成功,保存定位所在城市.再次进入不定位,使用上一次的定位. 1.首先引入高德地图api <script type=&q ...

  2. 利用高德地图API实现定位功能

    ① 注册高德地图的开发者,获取key 过程如图 ②下载SDK,导入jar包 注意这里要导入高德地图定位SDK的jar包!!! 如果你先前导入过地图SDK(如2D,3D地图的SDK)再导入定位的SDK运 ...

  3. 利用高德地图API获取任意两座城市之间的距离!异地也有惊喜!

    工作中有时会遇到这样一种场景:年末需要统计所有员工该年的航旅出差情况,然后根据他们的飞行距离补贴一定的交通费.例如如下所示情况: 然而,如果我们使用地图APP等工具逐一进行手工查询,在一家规模稍大的公 ...

  4. python高德地图api调用实例_Python 利用高德地图api实现经纬度与地址的批量转换...

    我们都知道,可以使用高德地图api实现经纬度与地址的转换.那么,当我们有很多个地址与经纬度,需要批量转换的时候,应该怎么办呢? 在这里,选用高德Web服务的API,其中的地址/逆地址编码,可以实现经纬 ...

  5. python调用高德地图api 可视化_Python:利用高德地图API实现找房

    记:本项目是在实验楼上看到的,但是上面的代码由于没有及时维护,爬虫文件的代码不再能完整的把所有房源信息爬取下来,我根据最新的58同城官网进行了研究,现在的官网的房源信息已经不是分页的了,而是拉到最后自 ...

  6. android 地铁地图api,利用高德地图api绘制公交+地铁的等时圈

    等时圈是指从某点出发,以某种交通方式在特定时间内能到达的距离覆盖的范围,在可达性分析中十分常见.原本我们需要将地图栅格化不停地调用路径规划api来获得等时圈,现在已经有网站为我们做好了这些工作,比如h ...

  7. 企业微信公众号网页开发之引入高德地图API

    test.jsp 页面文件 WxController.java 后端Controller层代码 WxService.java 后端Service层代码 WxDao.java 后端Dao层代码 一.JS ...

  8. 高德地图API使用~Web开发~从创建到具体功能展示

    一.呈现地图 首先在拥有一个自己账号,其次高德开放平台注册一个自己的key值和密钥 然后在public\index.html文件下,放上这段代码 <script type="text/ ...

  9. uniapp+高德地图api 获取定位信息及详细地址

    引入高德地图js api 高德地图api官方文档 根据官方文档建议,我使用的是JSAPI Loader 并且是通过npm安装的 npm i @amap/amap-jsapi-loader --save ...

  10. android开发笔记之高德地图使用

    前言 最近在给别的部门做项目,发现了他们在应用中使用了高德地图来定位,好吧,一个人实在是无聊,那让我们看看别人是怎么使用高德地图来定位吧,让我们揭开那层薄薄面纱,一睹女神的芳容吧. 参考资料 1.An ...

最新文章

  1. [UE4]死亡后调整视角
  2. [一文一命令]less命令详解
  3. git merge合并时遇上refusing to merge unrelated histories的解决方案
  4. 一个简单的用Python写抽奖程序
  5. MongoDB监控项--如何使用命令得到
  6. Android TimePicker 不能响应直接输入的问题
  7. 光储充一体化充电站_福建全省首座光储充一体化公交充电站投入使用
  8. IE开发人员工具无法使用
  9. jzoj4802-[GDOI2017模拟9.24]探险计划【费用流,拆点】
  10. 让AMD在中国发声 APU14技术创新大会首次在华召开
  11. c语言sort_C语言十大排序算法,让老师对你刮目相看的技巧
  12. 缓存-问题:缓存穿透 缓存雪崩 缓存击穿
  13. 比python更精简的语言,两行代码抓取淘宝/京东平台的商品数据--Uibot
  14. 20200411使用Potplayer对视频进行逐帧截图
  15. Ubuntu系统截图方法
  16. photoshop 抠图
  17. Zabbix-3.0.x使用OneAlert发送告警
  18. 云服务器文件导入,将电脑上的文件导入云服务器
  19. jQuery 操作整理
  20. ThingsBoard 2.5.3发布

热门文章

  1. 高可用、高可扩展的原生WebView通信架构的思考
  2. 如果我们遇上得州寒潮,会不会「悲剧」?
  3. python中def main是什么意思_python main用法解析
  4. HDFS BALANCER
  5. 按键精灵_提取文字、数字、字母、符号的通用Function
  6. 亚马逊aws认证是什么?亚马逊aws认证证书含金量怎么样?
  7. matlab 用m_map画地形水深图
  8. Java获取国内手机号码归属地
  9. 移动端开发兼容性处理整理
  10. 【原创】微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析