安卓开发笔记①:利用高德地图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 ...
随机推荐
- CocoaPods的使用(一) 安装
一.什么是CocoaPods? 前言: 思考如何引入一个第三方框架. 例如: 百度地图SDK.友盟.ShareSDK. 信鸽推送等. 从github或某处下载第三方SDK 工程中导入所需要的SDK的文 ...
- ScintillaNET的应用
出于工作需要,需要制作一个嵌入在桌面应用中的C语言编辑器,经过一系列调研,目前ScintillaNET应该是最合适的了,开源.轻便.功能丰富,但是踩得坑也很多,接下面一一说道. 目前Scintilla ...
- [R]关于R语言的绘图函数
1. 首先就是plot(x,y,...) 参数: x: 所绘图形横坐标构成的对象 y: 所绘图形纵坐标构成的对象 type: 指定所绘图形类型 pch: 指定绘制点时使用的符号 cex: 指定符号的大 ...
- 【CF600E】 Lomsat gelral
CF600E Lomsat gelral Solution 考虑一下子树的问题,我们可以把一棵树的dfn序搞出来,那么子树就是序列上的一段连续的区间. 然后就可以莫队飞速求解了. 但是这题还有\(\T ...
- 564. Find the Closest Palindrome
Given an integer n, find the closest integer (not including itself), which is a palindrome. The 'clo ...
- 【062新题】OCP 12c 062出现大量新题-15
choose one In your Oracle 12c database, you plan to execute the command: SQL> CREATE TABLESPACE t ...
- mybatis使用中的记录
一: 常用sql语句: sql顺序:select [distinct] * from 表名 [where group by having order by limit]; 查询某段时间内的数据: ...
- web socket 入门
WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,其优雅地解决了以往web服务器不能向web客户端实时推送消息的问题. 在浏览器js环境中,创建一个websock ...
- Vue2.5开发去哪儿网App 第三章笔记 下
1.样式的绑定 我们可以传给 v-bind:class 一个对象,以动态地切换 class 例如: :class="{activated:isactivated}" 上面的语法 ...
- 十分钟内在Ubuntu系统上搭建Mono开发环境(Mono软件Ubuntu系统国内镜像源、Mono国内镜像源)
Mono软件Ubuntu系统国内镜像源.Mono国内镜像源 http://download.githall.cn/repo 替换为国内源(非官方)有利于加快mono的安装速度,一般情况下,完成mono ...