• 6.9.定位图层(MyLocationNewOverlay)


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

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

    1.构造

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

    2.二次封装的定位图层

    1. package spec.map.osm.overlayers.functions;
    2. import org.osmdroid.views.MapView;
    3. import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
    4. import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;
    5. import spec.map.osm.overlayers.IBasicLayer;
    6. /**
    7. * 定位图层
    8. */
    9. public class MyLocationOverlayer extends MyLocationNewOverlay implements IBasicLayer {
    10. protected String name;
    11. protected String displayeName;
    12. /**
    13. * 定位图层
    14. * @param mapView
    15. */
    16. public MyLocationOverlayer(MapView mapView) {
    17. super(mapView);
    18. this.name="LocationLayer";
    19. this.displayeName="定位图层";
    20. GpsMyLocationProvider provider= (GpsMyLocationProvider) mMyLocationProvider;
    21. provider.setLocationUpdateMinTime(5000);
    22. provider.setLocationUpdateMinDistance(4);
    23. enableMyLocation(provider);
    24. }
    25. /**
    26. * 设置图层元名称
    27. * @param lyName
    28. */
    29. @Override
    30. public void setName(String lyName) {
    31. this.name = lyName;
    32. }
    33. /**
    34. * 获取图层元名称
    35. * @return
    36. */
    37. @Override
    38. public String getName() {
    39. return name;
    40. }
    41. /**
    42. * 设置图层显示名称
    43. * @param lyDisplayName
    44. */
    45. @Override
    46. public void setDisplayName(String lyDisplayName) {
    47. this.displayeName = lyDisplayName;
    48. }
    49. /**
    50. * 图层图层显示名称
    51. * @return
    52. */
    53. @Override
    54. public String getDisplayName() {
    55. return displayeName;
    56. }
    57. @Override
    58. @Deprecated
    59. public void setTransparency(int trans) {
    60. }
    61. @Override
    62. @Deprecated
    63. public int getTransparency() {
    64. return 0;
    65. }
    66. }

    3.图层使用

    1. /**
    2. * 定位图层
    3. */
    4. private MyLocationOverlayer locationOverlayer;
    5. locationOverlayer = new MyLocationOverlayer(map);
    6. controlGroupLayer.add(locationOverlayer);
    1. /**
    2. * 获取定位图层
    3. *
    4. * @return
    5. */
    6. public MyLocationOverlayer getLocationOverlayer() {
    7. return locationOverlayer;
    8. }
    9. /**
    10. * 显示定位图层
    11. */
    12. public void showLocationLayer() {
    13. locationOverlayer.setEnabled(false);
    14. }
    15. /**
    16. * 隐藏定位图层
    17. */
    18. public void hideLocationLayer() {
    19. locationOverlayer.setEnabled(false);
    20. }
    1. /**
    2. * 获取最后一次定位位置
    3. *
    4. * @return 可能为null
    5. */
    6. public GeoPoint getLastGpsLocation() {
    7. if (!getOverlayManager().getLocationOverlayer().isEnabled()) {
    8. return null;
    9. }
    10. if (!getOverlayManager().getLocationOverlayer().isMyLocationEnabled()) {
    11. return null;
    12. }
    13. var pt = getOverlayManager().getLocationOverlayer().getMyLocation();
    14. return pt;
    15. }

  • 相关阅读:
    【有序充电】基于粒子群算法实现电动汽车充电动态优化策略附matlab代码
    uniapp 兼容pc与手机的样式方法
    联盟认证 | 聚铭网络正式成为中国反网络病毒联盟成员
    JVM性能优化 —— 类加载器,手动实现类的热加载
    涨知识!Python 的异常信息还能这样展现
    TLog轻量级分布式日志标记追踪神器
    宝宝每天需要补充多少钙?宝宝睡觉出汗枕秃是缺钙吗?
    Linux安装Tomcat
    操作系统与进程调度
    [附源码]计算机毕业设计JAVA基于新高考模式下的排课系统
  • 原文地址:https://blog.csdn.net/weixin_41012454/article/details/134429744