安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
-
高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图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;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mLocationManagerProxy=LocationManagerProxy.getInstance(this);
- mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 2000, 15, this);
- }
- @Override
- public 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;
- }
- @Override
- public 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);
- }
- @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
- protected void onDestroy() {
- // TODO Auto-generated method stub
- super.onDestroy();
- mLocationManagerProxy.destroy();
- }
- @Override
- public void onLocationChanged(AMapLocation arg0) {
- // TODO Auto-generated method stub
- if(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;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.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(){
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- Log.e("helloworld", "收到广播");
- int i= intent.getIntExtra("status", -1);
- if(i==1){
- Log.e("helloworld", "在地理围栏内部");
- }
- if(i==0){
- Log.e("helloworld", "在地理围栏外部");
- }
- }
- };
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- mapView.onResume();
- }
- @Override
- protected void onDestroy() {
- // TODO Auto-generated method stub
- super.onDestroy();
- }
- @Override
- public void onMapClick(LatLng arg0) {
- // TODO Auto-generated method stub
- Log.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 stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mLocationManagerProxy=LocationManagerProxy.getInstance(this);
- mLocationManagerProxy.requestWeatherUpdates(LocationManagerProxy.WEATHER_TYPE_FORECAST,this);
- }
- @Override
- protected void onDestroy() {
- // TODO Auto-generated method stub
- super.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;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.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);
- }
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- mapview.onResume();
- }
- @Override
- protected void onDestroy() {
- // TODO Auto-generated method stub
- super.onDestroy();
- }
- @Override
- public void onMapLoaded() {
- // TODO Auto-generated method stub
- mapview.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;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.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);
- }
- @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
- protected void onDestroy() {
- // TODO Auto-generated method stub
- super.onDestroy();
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- }
- @Override
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onProviderDisabled(String provider) {
- // TODO Auto-generated method stub
- }
- AMapLocation location;
- @Override
- public void onLocationChanged(AMapLocation arg0) {
- // TODO Auto-generated method stub
- location=arg0;
- Log.e("helloworld", arg0.toString());
- }
- @Override
- public void onPoiItemDetailSearched(PoiItemDetail arg0, int arg1) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onPoiSearched(PoiResult arg0, int arg1) {
- // TODO Auto-generated method stub
- if(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);//每页显示多少个poiitem
- query.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 stub
- search();
- }
- }
版权声明:Copyright©All right reserved 一捆好葱版权所有,转载请说明出处。
http://blog.csdn.NET/CSDN568302203/article/details/52403706
安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)的更多相关文章
- web开发如何使用高德地图API(一)浏览器定位
说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...
- 【视频教学】如何利用高德地图IOS SDK进行开发?
Step1:使用IOS SDK可以做什么高德地图 iOS SDK 是一套基于 iOS 5.1.1 及以上版本的地图应用程序开发接口.通过该接口,用户可使用高德地图数据和服务轻松构建功能丰富.交互性强的 ...
- web开发如何使用高德地图API(四)通过AMap.Marker自定义标点
说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...
- web开发如何使用高德地图API(三)点击热点打开信息窗体
说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...
- web开发如何使用高德地图API(二)结合输入提示和POI搜索插件
说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...
- 利用百度地图api实现定位
使用百度地图api前需要先获取一个百度地图开放平台的访问应用AK, 获取百度地图开放平台访问应用AK方式:注册百度账号-->申请百度开发者-->获取密匙-->使用相关功能. 注册账号 ...
- 高德地图api实现地址和经纬度的转换(python)
利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...
- 【高德地图API】那些年我们一起开发的APP—即LBS应用模式分享
原文:[高德地图API]那些年我们一起开发的APP—即LBS应用模式分享 摘要:利用地图API都能做些什么应用呢?应用商店里所有的分类,都可以结合上LBS来丰富应用.除了传统的生活服务应用,还有新潮的 ...
- 安卓---高德地图API应用
说明:定位需要导入android_location 的jar包,如果没有会报错,这个官方网站好像找不到,这是我在网上找到的一个链接 http://download.csdn.net/detail/ra ...
随机推荐
- 浅析C#中的Thread ThreadPool Task和async/await
.net 项目中不可避免地要与线程打交道,目的都是实现异步.并发.从最开始的new Thread()入门,到后来的Task.Run(),如今在使用async/await的时候却有很多疑问. 先来看一段 ...
- Abp添加菜单
Abp添加菜单 在abp模板中添加菜单,EntityFramework+Angular.js模板,使用的Abp版本为3.8.1. 创建Abp项目模板,例如名称叫做LawAndRegulation. 服 ...
- .net图表之ECharts随笔02-字符云
后续每一类图表,若无特殊说明,都将建立在01的基础上,修改参数option,且参数均以json的格式 要形成如图所示的字符云,一般需要设置两个大参数——title和series 其中,title就是图 ...
- 【BZOJ4755】 [Jsoi2016]扭动的回文串
BZOJ4755 [Jsoi2016]扭动的回文串 Solution 考虑对于他给出的 A中的一个回文串: B中的一个回文串: 或者某一个回文的扭动字符串S(i,j,k) 这样子几个限制,我们1,2就 ...
- cad2019卸载/安装失败/如何彻底卸载清除干净cad2019注册表和文件的方法
cad2019提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2019失败提示cad2019安装未完成,某些产品无法安装,也有时候想重新安装cad2019 ...
- Django(ORM查询2)
day70 ORM训练专题 :http://www.cnblogs.com/liwenzhou/articles/8337352.html 内容回顾 1. ORM 1. ORM ...
- java 路径的问题
在项目开发中会碰到各种各样的获取项目路径的一些问题: 1:java项目: 以获取 类路径下的mess.properties 为例来说明: 文件在项目中的位置: src/bz/beppe/demo/r ...
- Oracle SQL Developer连接报错以及链接oracle的sqlplus出现协议适配器错误
之前用的好好的Oracle SQL Developer,不知道是不是匆忙关闭软件啥东西没保存或是删了什么东西,今天突然用不了的. 大清早的,打开Oracle SQL Developer,就给我一个惊喜 ...
- centos7 安装cmake
安装cmake之前,记得升级gcc,请参考centos7 升级GCC版本到7.3.0 #shell 太简单,懒得解释 wget https://cmake.org/files/v3.11/cmake- ...
- 跨站请求伪造(CSRF攻击)理解
一 概念 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的 ...