安卓开发笔记①:利用高德地图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 ...
随机推荐
- PCA和Whitening
PCA: PCA的具有2个功能,一是维数约简(可以加快算法的训练速度,减小内存消耗等),一是数据的可视化. PCA并不是线性回归,因为线性回归是保证得到的函数是y值方面误差最小,而PCA是保证得到的函 ...
- python--求参赛两队所有可能的比赛组合情况
朋友遇到一个面试题,让我帮忙实现,题目如下: 红队有A1,B1,C1三名队员,蓝队有A2,B2,C2三名队员,每轮比赛各队出一名队员参加,一名队员只能参加一次比赛,假设A1不会和B2打,B1不会和B2 ...
- openstack手动安装
安装文档: https://github.com/yongluo2013/osf-openstack-training/blob/master/installation/openstack-iceho ...
- Windows核心编程:第12章 纤程
Github https://github.com/gongluck/Windows-Core-Program.git //第12章 纤程.cpp: 定义应用程序的入口点. // #include & ...
- 在线安装WordPress更新 失败的解决办法
1. 登录ftp登录不上 , 总是登录失败 在服务器上新建了一个vsftpd服务器,并设置了相应的虚拟用户,修改chroot到网站目录 相关连接:https://blog.csdn.net/zhan ...
- ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...
- Lerning Entity Framework 6 ------ A demo of using Entity framework with MySql
Create a new project named MySqlTest Install following packages by right-clicking on the References ...
- MySQL随手记
一.MySQL数据迁移(由远端主机迁移到本地) 1.导出数据库mysqldump -u root -p db > dump_db_date.sqlroot: 账户db: 需要导出的数据库名 2. ...
- [Element-UI] 使用Element-UI的DateTimePicker组件报错:Cannot read property 'getHours' of undefined
使用Element-UI组件的DateTimePicker,如下: <template> <div class="block"> <span clas ...
- Smart/400开发上手1:入门
1.介绍 Smart/400是在AS/400之上的开发平台,管理开发.运维的全生命周期. 2.设计基础 Introducing Fields Smart通过字段字典Field Dictionary来存 ...