高德地图使用心得,百度地图使用心得

1.环境配置

高德开发定位,地图,搜索,加覆盖物,这四个功能只需要要做三部

第一,下载三个架包,高德里面不涉及到3d地图没有.so文件,只需要三个架包,对于我们不需要的功能其他架包可以不用下载,比如不涉及到导航我们就不需要下载导航架包,这样可以减少应用的负重,将下载好的架包导入工程,配上截图!

这是加入项目中截图

导包完成之后然后就是添加服务,首先,请在application标签中声明service组件,每个app拥有自己单独的定位service。<service android:name="com.amap.api.location.APSService"></service>

然后,<!--用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

<!--用于访问GPS定位-->

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

<!--获取运营商信息,用于支持提供运营商信息相关的接口-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<!--用于访问网络,网络定位需要上网-->

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<!--用于读取手机当前的状态-->

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

最后设置Key,在application标签中加入

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key      

</meta-data>

2.功能实现

最后就是代码实现我们想要的功能

第一步初始化Amap这个类,这个类是地图对象,里面有很多地图的操作方法和接口

 private void init() {
        if (aMap == null) {
            aMap = mapView.getMap();
            aMap.moveCamera(CameraUpdateFactory.zoomTo(16));//设置地图的缩放比例
            setUpMap();
        }
    }

得到地图对象后初始化地图对象的一些属性

 private void setUpMap() {
        // 自定义系统定位小蓝点
        MyLocationStyle myLocationStyle = new MyLocationStyle();
        myLocationStyle.myLocationIcon(com.amap.api.maps2d.model.BitmapDescriptorFactory
                .fromResource(R.drawable.biaozhi));// 设置小蓝点的图标
        myLocationStyle.strokeColor(Color.WHITE);// 设置圆形的边框颜色
        myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色
        myLocationStyle.strokeWidth(0.0f);// 设置圆形的边框粗细*/
        aMap.setMyLocationStyle(myLocationStyle);
        aMap.setLocationSource(this);// 设置定位监听
        aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示
        aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false*/
            }
        });
    }

运行激活定位的接口方法,并且开始定位

/**
     * 激活定位
     */
    @Override
    public void activate(OnLocationChangedListener listener) {
        mListener = listener;
        if (mlocationClient == null) {
            mlocationClient = new AMapLocationClient(this);
            mLocationOption = new AMapLocationClientOption();
            //设置定位监听
            mLocationOption.setNeedAddress(true);
            mLocationOption.setOnceLocation(true);
            mlocationClient.setLocationListener(this);
            //设置为高精度定位模式
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
            //设置定位参数
            mlocationClient.setLocationOption(mLocationOption);
            // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
            // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
            // 在定位结束后,在合适的生命周期调用onDestroy()方法
            // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
            mlocationClient.startLocation();
        }
    }

开启定位之后定位成功就会回调定位成功接口方法,着这里我们可以获取到我们定位后的城市,经纬度,以及很多

 /**
     * 定位成功后回调函数
     */
    @Override
    public void onLocationChanged(AMapLocation amapLocation) {
        if (mListener != null && amapLocation != null) {
            if (amapLocation != null
                    && amapLocation.getErrorCode() == 0) {
                mListener.onLocationChanged(amapLocation);// 显示系统小蓝点
                aMap.addMarker(new com.amap.api.maps2d.model.MarkerOptions()
                        .anchor(0.5f, 0.5f)
                        .icon(com.amap.api.maps2d.model.BitmapDescriptorFactory

                                .fromBitmap(BitmapFactory.decodeResource(
                                        getResources(), R.drawable.biaozhi)))
                        .position(new com.amap.api.maps2d.model.LatLng(amapLocation.getLatitude(), amapLocation.getLongitude())));
                Log.e("5555",amapLocation.getProvince()+","+amapLocation.getCity()+","+amapLocation.getAddress()+","+amapLocation.getStreet()+","+amapLocation.getAoiName());
                city=amapLocation.getCity();
                lp=new LatLonPoint(amapLocation.getLatitude(),amapLocation.getLongitude());
                poi_Search("");//开始周边搜索
            } else {
                String errText = "定位失败," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo();
                Log.e("AmapErr",errText);
            }
        }
    }

租后就是周边搜索代码:

 private void poi_Search(String str) {
        com.amap.api.services.poisearch.PoiSearch.Query mPoiSearchQuery = new com.amap.api.services.poisearch.PoiSearch.Query(str, "",city);

        mPoiSearchQuery.requireSubPois(true);
        mPoiSearchQuery.setPageSize(30);
        mPoiSearchQuery.setPageNum(0);
        com.amap.api.services.poisearch.PoiSearch poiSearch = new com.amap.api.services.poisearch.PoiSearch(BaiDuMapActivity.this, mPoiSearchQuery);
        poiSearch.setBound(new com.amap.api.services.poisearch.PoiSearch.SearchBound(lp, 5000, true));
        poiSearch.setOnPoiSearchListener(this);
        poiSearch.searchPOIAsyn();
    }

搜索成功后调用回调接口方法,获取我们搜索到的结果

 @Override
    public void onPoiSearched(com.amap.api.services.poisearch.PoiResult poiResult, int i) {
        poiItems=poiResult.getPois();
        listView.setAdapter(new BaiDuListAdapter(BaiDuMapActivity.this,poiItems));
    }

最后我们对搜索的结果进行处理。

最后一个功能就是添加覆盖物

 aMap.addMarker(new com.amap.api.maps2d.model.MarkerOptions()
                        .anchor(0.5f, 0.5f)
                        .icon(com.amap.api.maps2d.model.BitmapDescriptorFactory
                                .fromBitmap(BitmapFactory.decodeResource(
                                        getResources(), R.drawable.biaozhi)))
                        .position(new com.amap.api.maps2d.model.LatLng(latitude, longitude)));

根据经纬度将我们的红色标志添加到地图上,以便用户很好的知道自己当前位置。

3.百度跟高德的区别

1百度2d地图需要添加.so文件而高德不需要

2百度不支持关键字为空的兴趣点搜索而高德可以

时间: 2024-10-10 04:36:06

高德地图使用心得,百度地图使用心得的相关文章

微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法

原文:微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法 腾讯地图坐标转百度坐标 案例:本次开发的系统是一个商家联盟积分系统.在全国各地都有商家联盟的网点. 要求实现的功能 a.微信粉丝通过微信号就能查看附近的商家 b.我的联盟系统统计在2公里之内的商家网点 c.并标出商家和粉丝位置的距离是多少米. d.在商家的详细介绍页面设置百度地图接入步行.公交.驾车一键导航功能 那么现在问题来了: 问题1:在做微信O2O开发的过程中,通过微信地理位置功能事件获得的是腾讯地图坐标.而我们的导航

网页嵌入百度地图和使用百度地图api自定义地图的详细步骤

在网页中插入百度地图 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/creatmap/,搜索出自己要展示的位置,如下图所示. 第二步:设置地图,大家可以对网站显示地图的宽高进行设置,其余选项不动. 第三步:添加标注.点击第一个图标后,在右侧找到自己的位置,单击鼠标左键可定位.标记图标处可更换图标形状,名称和备注填入位置相关信息. 第四步:获取代码.将代码贴到你的网页

乐卡上海网点地图制作心得 | 百度地图API使用心得

前言 事情的起因是我的爱人喜欢收集一些美丽的乐卡(明信片的一种,正面是美丽壮阔的风景照).作为一个坚实的后盾自然要支持她!于是我经常借着午休穿梭在大街小巷,凭借乐卡官方提供的乐卡网点地址进行寻找并取卡.在搜寻过程中,萌生了制作一张基于那些地址的专门戳点地图的想法.期间也看到蚂蚁家制作的北京乐卡地图使用的是百度地图API,但是该网页仅能运行于PC端,手机打开巨卡.刚好我的github博客站最近配置完成了,准备自己也写一个. 材料单 百度开放平台账号一个 百度开放平台浏览器端启用了Javascrip

Android开发心得——百度地图sdk使用

本博文欢迎转载,转载请注明来自http://www.cnblogs.com/qinxianyuzou/ 如果各位看完这篇文章有任何疑问的欢迎交流,去新浪微博关注我Android小码农,共同探讨Android的应用开发的问题. 很久没有写过技术分享贴了,今天我们来讲一下百度地图sdk,顺便算是给自己马克一个. 事实上现在百度地图sdk已经很多东西都做好了,并不需要做很多工序,不过值得注意的是,现在百度把地图跟定位分开了,所以做一些定位之类的就需要两者结合. 百度地图sdk它本身的demo就是很好的

【Android接百度地图API】百度地图Demo点击按钮闪退

运行百度地图自带的BaiduMap_AndroidSDK_v4.1.0_Sample里面的BaiduMapsApiASDemo发现点击上面的按钮会闪退,控制台报的是xml的问题 查了一下,官方文档特别交代了要加入SDKInitializer.initialize(getApplicationContext()); 但是Demo里面没有,因而要加上. 即可解决Demo的Bug.

地图篇之百度地图各种自定义需求

项目中的对地图的各种需求,实现方式. 需求1:自定义缩放按钮,自定义当前位置按钮 解决方式:隐藏地图本身自带的缩放按钮,添加自定义的缩放按钮,实现点击缩放地图功能 (一). 隐藏地图本身自带的缩放按钮: // 隐藏logo View child = mMapView.getChildAt(1); if (child != null&& (child instanceof ImageView||child instanceof ZoomControls)) { child.setVisibi

Android定位&amp;地图&amp;导航——基于百度地图移动获取位置和自动定位

一.问题描述 使用百度地图实现如图所示应用,首先自动定位当前我起始位置(小圆点位置),并跟随移动不断自动定位我的当前位置 百度Api不同版本使用会有些差异,本例中加入lib如下: 二.编写MyApplication类 public class MyApplication extends Application { static MyApplication myApplication; BMapManager mBMapManager = null; String mStrKey = "7ZfuR

Android定位&amp;地图&amp;导航——基于百度地图实现的定位功能

一.问题描述 LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位.地图.导航等,首先我们看如何基于百度地图实现定位功能 二.配置环境 1.注册密钥:地址http://developer.baidu.com/map/ 2.下载定位SDK,并导入SDK如图所示: 三.编写MyApplication类 编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中 封装下列方法 1.  获取定位信息——

腾讯地图坐标转百度地图坐标

实现功能:调用微信获取当前位置接口,转换为百度坐标,进行导航 (1)net.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html>

PHP腾讯地图经纬度转百度地图经纬度

/** * 中国正常GCJ02坐标---->百度地图BD09坐标 * 腾讯地图用的也是GCJ02坐标 * @param double $lat 纬度 * @param double $lng 经度 */ function Convert_GCJ02_To_BD09($lat,$lng){         $x_pi = 3.14159265358979324 * 3000.0 / 180.0;         $x = $lng;         $y = $lat;         $z =s