6.9.定位图层(MyLocationNewOverlay)

本文介绍了如何在移动端GIS应用中使用MyLocationNewOverlay实现GPS和网络定位的实时展示,包括MyLocationOverlayer的构造、封装和使用方法,以及控制定位图层的显示和隐藏功能。
摘要由CSDN通过智能技术生成

愿你出走半生,归来仍是少年!

        在移动端的Gis应用中,定位是必不可少的实用性功能。通过Overlay的派生类MyLocationNewOverlay可实现Gps以及网络定位数据的实时展示。

1.构造

MyLocationNewOverlay(MapView mapView)
MyLocationNewOverlay(IMyLocationProvider myLocationProvider, MapView mapView)

        通过传入MapView即可创建实例图层,然后可以直接添加到地图中。

2.二次封装的定位图层

package spec.map.osm.overlayers.functions;

import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;

import spec.map.osm.overlayers.IBasicLayer;


/**
 * 定位图层
 */
public class MyLocationOverlayer extends MyLocationNewOverlay implements IBasicLayer {

    protected String name;

    protected String displayeName;

    /**
     * 定位图层
     * @param mapView
     */
    public MyLocationOverlayer(MapView mapView) {
        super(mapView);

        this.name="LocationLayer";
        this.displayeName="定位图层";

        GpsMyLocationProvider provider= (GpsMyLocationProvider) mMyLocationProvider;

        provider.setLocationUpdateMinTime(5000);
        provider.setLocationUpdateMinDistance(4);

        enableMyLocation(provider);

    }

    /**
     * 设置图层元名称
     * @param lyName
     */
    @Override
    public void setName(String lyName) {
        this.name = lyName;
    }

    /**
     * 获取图层元名称
     * @return
     */
    @Override
    public String getName() {
        return name;
    }

    /**
     * 设置图层显示名称
     * @param lyDisplayName
     */
    @Override
    public void setDisplayName(String lyDisplayName) {
        this.displayeName = lyDisplayName;
    }

    /**
     * 图层图层显示名称
     * @return
     */
    @Override
    public String getDisplayName() {
        return displayeName;
    }


    @Override
    @Deprecated
    public void setTransparency(int trans) {

    }

    @Override
    @Deprecated
    public int getTransparency() {
        return 0;
    }
}

3.图层使用

   /**
     * 定位图层
     */
    private MyLocationOverlayer locationOverlayer;

   locationOverlayer = new MyLocationOverlayer(map);


    controlGroupLayer.add(locationOverlayer);
/**
     * 获取定位图层
     *
     * @return
     */
    public MyLocationOverlayer getLocationOverlayer() {
        return locationOverlayer;
    }

    /**
     * 显示定位图层
     */
    public void showLocationLayer() {
        locationOverlayer.setEnabled(false);
    }

    /**
     * 隐藏定位图层
     */
    public void hideLocationLayer() {
        locationOverlayer.setEnabled(false);
    }

    /**
     * 获取最后一次定位位置
     *
     * @return 可能为null
     */
    public GeoPoint getLastGpsLocation() {

        if (!getOverlayManager().getLocationOverlayer().isEnabled()) {
            return null;
        }

        if (!getOverlayManager().getLocationOverlayer().isMyLocationEnabled()) {
            return null;
        }

        var pt = getOverlayManager().getLocationOverlayer().getMyLocation();

        return pt;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是那个帕吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值