高德地图- Fragment无法进行高德定位,求解决!

问题描述

Fragment无法进行高德定位,求解决!

同样的方法在Activity里可以正常显示,但在Fragment里只加载出了地图,无法显示定位。应该是Fragment的问题。求大神教育!
public class ParkFragment extends Fragment implements
LocationSource AMapLocationListener OnCheckedChangeListener{

    private MapView mapView;
    private AMap aMap;
    private OnLocationChangedListener mListener;
    private LocationManagerProxy mAMapLocationManager;
    private ImageView imglist;

    @Override
    public View onCreateView(LayoutInflater inflater ViewGroup container
                    Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.tab01 container false);

            imglist = (ImageView) view.findViewById(R.id.imglist);
            imglist.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                            Intent intent = new Intent(getActivity() ParklistActivity.class);
                            startActivity(intent);
                    }
            });

            //在onCreate方法中给aMap对象赋值
            mapView = (MapView) view.findViewById(R.id.map);
            mapView.onCreate(savedInstanceState);// 必须要写
            aMap = mapView.getMap();
            return view;
    }

    @Override
    public void onAttach(Activity activity) {
            super.onAttach(activity);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            init();
    }

    /**
     * 初始化AMap对象
     */
    public void init() {
            if (aMap == null) {
                    aMap = mapView.getMap();
                    setUpMap();
            }
    }

    public void setUpMap() {
            aMap.setLocationSource((LocationSource) getActivity());// 设置定位监听
            aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示
            aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
            aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
    }

    /**
     * 此方法需存在
     */
    @Override
    public void onResume() {
            super.onResume();
            mapView.onResume();
    }

    /**
     * 此方法需存在
     */
    @Override
    public void onPause() {
            super.onPause();
            mapView.onPause();
            deactivate();
    }

    /**
     * 方法必须重写
     */
    @Override
    public void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            mapView.onSaveInstanceState(outState);
    }

    /**
     * 此方法需存在
     */
    @Override
    public void onDestroy() {
            super.onDestroy();
            mapView.onDestroy();
    }

    @Override
    public void onLocationChanged(Location location) {
    }

    /**
     * 定位成功后回调函数
     */
    @Override
    public void onLocationChanged(AMapLocation amapLocation) {
            if (mListener != null && amapLocation != null) {
                    if (amapLocation!=null&&amapLocation.getAMapException().getErrorCode() == 0) {
                            mListener.onLocationChanged(amapLocation);// 显示系统小蓝点
                    }
            }
    }

    /**
     * 激活定位
     */
    @Override
    public void activate(OnLocationChangedListener listener) {
            mListener = listener;
            if (mAMapLocationManager == null) {
                    mAMapLocationManager = LocationManagerProxy.getInstance(getActivity());
                    //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
                    //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求
                    //在定位结束后,在合适的生命周期调用destroy()方法
                    //其中如果间隔时间为-1,则定位只定一次
                    mAMapLocationManager.requestLocationData(
                                    LocationProviderProxy.AMapNetwork 60*1000 10 this);
            }
    }

    /**
     * 停止定位
     */
    @Override
    public void deactivate() {
            mListener = null;
            if (mAMapLocationManager != null) {
                    mAMapLocationManager.removeUpdates(this);
                    mAMapLocationManager.destroy();
            }
            mAMapLocationManager = null;
    }

    @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 onCheckedChanged(RadioGroup group int checkedId) {
            // TODO Auto-generated method stub

    }

解决方案

可以 SupportMapFragment和MapFragment

时间: 2024-09-21 20:25:58

高德地图- Fragment无法进行高德定位,求解决!的相关文章

高德地图异步加载-高德地图异步在jsp页面加载

问题描述 高德地图异步在jsp页面加载 http://webapi.amap.com/maps?v=1.3 这是我用的高德地图的地址. 我用load方法,getScript方法异步加载都是不行.请各位大侠指教. 解决方案 js引用位置问题,视页面加载情况而定 解决方案二: 上面这样的引用方式是可以在加载出来的,现在就是要进行页面加载速度的优化,让地图加载快一点, 现在我把第一个js用load或者getScript方法加载就不行.是不是http://webapi.amap.com/maps?v=1

高德地图app怎么签到? 高德地图签到赚金币的教程

高德地图是很实用的,更新也比较快.软件不断地更新,功能也越来越多了.其中,每天签到可以得到金币,金币多了可以兑换实物等.现在,小编和大家分享一下,在高德地图上该如何签到. 1.首先,打开高德地图.如图. 2.点击[我的],如图. 3.进入"我的"页面,如图. 4.点击[签到送礼包],如图. 5.点击[立即签到],如图. 6.点击[确定],如图. 7.签到后,页面显示如图.

与高德地图分享互通 全新高德导航6.1版发布

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   近日,高德导航安卓6.1版正式发布,并实现了与高德地图分享互通.6.1版新功能包括大幅升级的导航引擎.清爽简洁的操作界面.自然直观的交互方式,再加上"一键通"坐席服务,高德独 有的AR实景导航,国内首发的高速导航模式及云端同步等功能.新版本无论是从交互.性能,还是功能, 都有了全面的革新. 全新界面--简约而不简单 全新版的高德地图界面设计主

Android Fragment里嵌入高德地图定位

在上一篇已经写了嵌入高德地图,这里来说一下怎么实现定位,并显示定位的图标. public class FragmentMap extends Fragment implements LocationSource, AMapLocationListener{        private static FragmentMap fragment = null;        @ViewInject(R.id.map)        private MapView mapView;        pr

Android开发之高德地图聚合Markers

上一篇说了在地图上实现了自定义Markers,但是markers太多在地图上显示的就会密密麻麻,重叠覆盖,这里就介绍一下markers的聚合.先看一下封装好的聚合类.   public class MarkerClusterYellow {     private Activity activity;     private MarkerOptions options;     private ArrayList<MarkerOptions>includeMarkers;     privat

android高德地图的使用

问题描述 android高德地图的使用 android高德地图开发如何下载完离线地图后调用呢,是自动调用还是怎样呢 解决方案 在Swift基础 - - 高德地图实践(一)中使用swift来使用高德地图,这里使用Android实践高德地图包含定位,移动地图动画,获取网络数据,marker标记以及点击,Infowindow自定义界面以及点击,以及点击无marker地图上面隐藏infowindow等功能.直接看代码package com.carmap.ui; import android.graphi

sdk-有人用过高德地图的Android SDK嘛、为什么显示地图的时候R老是报错

问题描述 有人用过高德地图的Android SDK嘛.为什么显示地图的时候R老是报错 解决方案 高德地图android sdk 地图显示和定位 基本使用方法 解决方案二: 跟R应该没关系,R是自动生成的. 解决方案三: 看下你的包有没有正确导入,我看它是灰的. 解决方案四: R文件是自动生成的. 应该是你的程序有错误..仔细检查一下吧

Android高德地图自定义Markers的例子

之前的博客里说了地图的嵌入和定位,今天就说说在地图上显示一些我们想要的.在地图中有自带的Markers(标记),但是它只显示一个椭圆的图标,一般是不符合我们的需求的,这样就要我们自己来自定义.首先标记有下面一些属性; 1.position(Required) 在地图上标记位置的经纬度值.参数不能为空. 2.title 当用户点击标记,在信息窗口上显示的字符串. 3.snippet 附加文本,显示在标题下方. 4.draggable 如果您允许用户可以自由移动标记,设置为" true "

模拟器内存不够 高德地图

问题描述 模拟器内存不够 高德地图 为什么我运行高德的demo的时候 模拟器报错 还运行不了 这样的配置还不够吗 还是哪里出了问题 解决方案 模拟器是没有定位功能的,用真机调试然后还需要在高德地图开发者平台注册申请key 解决方案二: 地图类的程序建议还是真机运行测试.