fragment-百度地图 onReceiveLocation 回调

问题描述

百度地图 onReceiveLocation 回调

package cn.LCSys.fragment;

import java.util.ArrayList;
import java.util.Calendar;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMapOptions;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.SupportMapFragment;
import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;
import com.baidu.mapapi.model.LatLng;
import android.content.BroadcastReceiver;
import cn.LCSys.R;
import cn.LCSys.dataParse.AgentN;
import cn.LCSys.dataParse.PollContent;
import cn.LCSys.fragment.FragmentRealData.RealDataAdapter;
import cn.LCSys.fragment.FragmentRealData.RealtimeData;
import cn.LCSys.socket.Const;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.RadioButton;
import android.widget.Toast;
/**

  • 数据地图展示
  • @ClassName: FragmentRealWifiMap
  • @author xtz
    • @version 1.0
      *
      */
      public class FragmentRealWifiMap extends Fragment {

      String TAG = "FragmentRealWifMap";
      private BroadcastReceiver DataReceiver = null;
      View Curview;
      private MapView mMapView;
      BaiduMap mBaiduMap;
      public static Context s_context;
      private LocationMode mCurrentMode;
      LocationClient mLocClient;
      BitmapDescriptor mCurrentMarker;
      boolean isFirstLoc = true;// 是否首次定位
      RadioButton Rbnormalmode;//普通图模式
      RadioButton Rbstatellitemode;//卫星图模式

      public MyLocationListenner myListener = new MyLocationListenner();

    @SuppressWarnings("unused")
    private static final String LTAG = FragmentRealWifiMap.class.getSimpleName();
    SupportMapFragment map;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
            //这个初始化很重要
            SDKInitializer.initialize(getActivity().getApplicationContext()); 
    
            Curview = inflater.inflate(R.layout.fragment_realinfo_wifimap, null);
    
            mMapView =  (MapView) Curview.findViewById(R.id.realwifi_map);
            mBaiduMap = mMapView.getMap();
            s_context = getActivity();
    
            SetMarkPic();//设置位置图标
            AddCompress();//添加同步图标
            SetLocMode();//设置当前位置
            initView();
    
        return Curview ;
    }
    //
    void initView()
    {
            Rbnormalmode = (RadioButton)Curview.findViewById(R.id.normalmap);
            Rbstatellitemode = (RadioButton)Curview.findViewById(R.id.statellitemap);
    
            Rbnormalmode.setOnClickListener(new OnClickListener()
            {
                    public void onClick(View v)
                    {
                            boolean checked = ((RadioButton) v).isChecked();
                            if(checked)
                            {
                            //普通图
                              mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
                              mLocClient.requestLocation();
                            }
    
                    }
    
            });
            Rbstatellitemode.setOnClickListener(new OnClickListener()
            {
                    public void onClick(View v)
                    {
                            boolean checked = ((RadioButton) v).isChecked();
                            if(checked)
                            {//卫星图
                         mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                         mLocClient.requestLocation();
                            }
                    }
    
            });
    
    }
    //设置跟踪位置mark图标
    private void SetMarkPic()
    {
            mCurrentMarker = BitmapDescriptorFactory
                            .fromResource(R.drawable.icon_loc_go);
    }
    //设置位置模式
    private void AddCompress()
    {
              mCurrentMode = LocationMode.FOLLOWING;//罗盘模式
      mBaiduMap
              .setMyLocationConfigeration(new MyLocationConfiguration(
                      mCurrentMode, true, mCurrentMarker));
    
    }
    //设置系统地图的位置模式,我们设置为跟随模式,即中心点在当前位置
    private void SetLocMode()
    {
        mCurrentMode = LocationMode.FOLLOWING;
    mBaiduMap
            .setMyLocationConfigeration(new MyLocationConfiguration(
                    mCurrentMode, true, mCurrentMarker));
        // 开启定位图层
            mBaiduMap.setMyLocationEnabled(true);
            // 定位初始化
            mLocClient = new LocationClient(getActivity());
            mLocClient.registerLocationListener(myListener);
            LocationClientOption option = new LocationClientOption();
            option.setOpenGps(true);// 打开gps
            option.setAddrType("all");//返回的定位结果包含地址信息
            option.setCoorType("bd09ll"); // 设置坐标类型返回的定位结果是百度经纬度
            option.setScanSpan(1000);
            option.disableCache(true);//禁止启用缓存定位
               mLocClient.setLocOption(option);
            mLocClient.start();
            if(mLocClient.isStarted())
            {
                            int rt = mLocClient.requestLocation();
            }
    
    }
    /**
     * 定位SDK监听函数
     */
    public class MyLocationListenner implements BDLocationListener {
    
    @Override
    public void onReceiveLocation(BDLocation location) {
        // map view 销毁后不在处理新接收的位置
        if (location == null || mMapView == null) {
            return;
        }
        Log.i(TAG,"now in MyLocationListenner");
        MyLocationData locData = new MyLocationData.Builder()
                .accuracy(location.getRadius())
                        // 此处设置开发者获取到的方向信息,顺时针0-360
                .direction(100).latitude(location.getLatitude())
                .longitude(location.getLongitude()).build();
        mBaiduMap.setMyLocationData(locData);
        if (isFirstLoc) {
            isFirstLoc = false;
            LatLng ll = new LatLng(location.getLatitude(),
                    location.getLongitude());
            MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
            mBaiduMap.animateMapStatus(u);
        }
    
        if(location.getLocType() == BDLocation.TypeOffLineLocation )
        {
                Log.e(TAG,"Now is 离线定位!");
        }
        if(location.getLocType() == BDLocation.TypeOffLineLocationFail)
        {
                Log.e(TAG,"离线定位失败!");
        }
                //|| BDLocation.TypeOfflineLocationFail)
    }
    
            public void onReceivePoi(BDLocation poiLocation) {
                    if (poiLocation == null){
    
                            return ;
                    }
                    StringBuffer sb = new StringBuffer(256);
                    if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation)
                    {
                    sb.append("naddr : ");
                    sb.append(poiLocation.getAddrStr());
                    }
            }
    }
    
    @Override
    public void onStart() {
            super.onStart();
    }
    
    @Override
    public void onResume() {
            super.onResume();
            mMapView.onResume();
    }
    
    @Override
    public void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
    }
    
    @Override
    public void onPause() {
            super.onPause();
            mMapView.onPause(); 
    
    }
    
    @Override
    public void onStop() {
            super.onStop();
    }
    
    @Override
    public void onDestroy() {
    
                    // 退出时销毁定位
                    mLocClient.stop();
                    // 关闭定位图层
                    mBaiduMap.setMyLocationEnabled(false);
                    mMapView.onDestroy();
                    mMapView = null;
    
                super.onDestroy();
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
    }
    

}

解决方案

http://ask.csdn.net/questions/182612

时间: 2024-12-03 09:15:57

fragment-百度地图 onReceiveLocation 回调的相关文章

android-Android百度地图API onReceiveLocation

问题描述 Android百度地图API onReceiveLocation onReceiveLocation 在模拟器上运行可以触发 移动到真机上onReceiveLocation触发不了不知道为什么<?xml version=""1.0"" encoding=""utf-8""?> package=""com.example.baidumapdingwei"" andro

api-JQuery可以跨域访问,但是回调函数却无法成功,具体目的:百度地图API地址查坐标

问题描述 JQuery可以跨域访问,但是回调函数却无法成功,具体目的:百度地图API地址查坐标 我要用百度地图API的一个功能, 要用的技术是JavaScript, 百度API文档链接是百度地图根据地址查询经纬度 我选取测试的具体API为http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLoc

百度地图-在android开发中使用百度LBS定位服务无法稳定准确获得地理位置

问题描述 在android开发中使用百度LBS定位服务无法稳定准确获得地理位置 程序代码如下所示,我是仿照网上的实例编写的,在manifests文件中已经添加了识别码以及百度定位的service,权限也按照百度的说明文档添加好了,在虚拟机中运行效果为无法获取地理位置,错误码62,真机运行则毫无反应,我完全找不到是什么地方出了问题,哪位大大可以帮我看一下吗? import android.os.Bundle; import android.support.v4.app.Fragment; impo

Android下如何使用百度地图sdk

百度地图 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系统)及以上版本设备的应用程序接口   可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富.交互性强的LBS(地图类)应用程序. 百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制.您需申请密钥(key)后,才可使用百度地图Android SDK.任何非营利性产品请直接使

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

Android下 使用百度地图sdk

百度地图 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系统)及以上版本设备的应用程序接口.可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富.交互性强的LBS(地图类)应用程序. 百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制.您需申请密钥(key)后,才可使用百度地图Android SDK.任何非营利性产品请直接使用.

安卓-百度地图获取经纬度没问题但是具体地址省城市街道有时能得到有时却是返回null求解救

问题描述 百度地图获取经纬度没问题但是具体地址省城市街道有时能得到有时却是返回null求解救 public class PhotoFragment extends Fragment { public static final String IMAGE_UNSPECIFIED = "image/*"; private ImageView iv_head = null; private String[] strings = null; private FileOutputStream b

我的Android进阶之旅------&amp;gt;Android百度地图定位SDK功能学习

          因为项目需求,需要使用百度地图的定位功能,因此去百度地图开发平台下载了百度地图的Android定位SDK最新版本的开发包和示例代码学习.       Android 定位SDK地址:http://developer.baidu.com/map/index.php?title=android-locsdk      下载地址为:http://developer.baidu.com/map/index.php?title=android-locsdk/geosdk-android

Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还是会及时更新的,比如后续会出 分享SDK:sharesdk 后端SDK:Bmob 推送SDK:极光推送 短信SDK:验证码实现 等等-- 或者出一些装ubuntu系统或者黑苹果教程什么的,或者5.X之后的新玩法,主要还是困于时间方面缺少,或许这也是一种锻炼吧,工作了挺久的了,越发觉得自己的JAVA基