android调用百度地图定位与附近搜索

一、定位

  1.下载百度百度地图APIdemo官网上下

  2.下好的DEMO里找到Libs这个目录将里面的内容拷贝到自己的工程目录下,有LIB包也有文件夹,记住这是全部拷贝

  3.我们调用百度地图时需要一个KEY值:这个是放在manifest.xml这个文件的application里的

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="0GoSVfnbAooHKmfHmKUrk6ip" />

即这里的value值,这个值到官网上去申请一个就行,官网上有具体步骤;

4.同时在manifest.xml里添加权限:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

  5.添加定位服务:这一点很容易忘记!在application里

<service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>


  6.定位代码:

baiduMap.setMyLocationEnabled(true);
  
  locationClient = new LocationClient(getApplicationContext());
  locationClient.registerLocationListener(new BDLocationListener() {
   
   @Override
   public void onReceiveLocation(BDLocation location) {
    // TODO Auto-generated method stub
    if (location == null || mapView == null)
     return;
    
   
    MyLocationData locationData =new  MyLocationData.Builder().accuracy(location.getRadius())
      .direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();
    baiduMap.setMyLocationData(locationData);
    if(isfirst) {
     isfirst = false;
     LatLng ll = new LatLng(location.getLatitude(),
       location.getLongitude());
     MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
     baiduMap.animateMapStatus(u);
 
     searchfujing(location.getLatitude(),location.getLongitude());
    }
   }
  });
  
  LocationClientOption  option = new LocationClientOption();
  option.setOpenGps(true);
  option.setScanSpan(1000);
  option.setCoorType("bd09ll"); //
  locationClient.setLocOption(option);
  locationClient.start();
  


二、附近搜索:

1.声明: PoiSearch poiSearch;

2.实例化+注册事件:

poiSearch = PoiSearch.newInstance();
  
  poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
   
   @Override
   public void onGetPoiResult(PoiResult result) {
    if(result==null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
     Toast.makeText(LocationDingwei.this, "未找到结果", Toast.LENGTH_LONG)
     .show();
     return;
    } else if(result.error == SearchResult.ERRORNO.NO_ERROR) {
     baiduMap.clear();
     PoiOverlay overlay = new MyPoiOverlay(baiduMap);
     baiduMap.setOnMarkerClickListener(overlay);
     overlay.setData(result);
     overlay.addToMap();
     overlay.zoomToSpan();
     return;
    }
    
    
   }
   
   @Override
   public void onGetPoiDetailResult(PoiDetailResult result) {
    if (result.error != SearchResult.ERRORNO.NO_ERROR) {
     Toast.makeText(LocationDingwei.this, "抱歉,未找到结果", Toast.LENGTH_SHORT)
       .show();
    } else {
     Toast.makeText(LocationDingwei.this, result.getName() + ": " + result.getAddress(), Toast.LENGTH_SHORT)
     .show();
    }
    
   }
  });

3实现调用:

public void searchfujing(double latitude,double longtitude) {
  //附近搜索
    PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption(); 
    
          nearbySearchOption.location(new LatLng(latitude, longtitude)); 
          nearbySearchOption.keyword("电影院"); 
       nearbySearchOption.radius(5000);// 检索半径,单位是米 
        nearbySearchOption.pageNum(0); 
         poiSearch.searchNearby(nearbySearchOption);// 发起附近检索请求 
 }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值