OpenLayers实战,OpenLayers获取用户定位位置并高亮显示用户所在行政区划

132 篇文章 10 订阅 ¥159.90 ¥99.00
121 篇文章 64 订阅 ¥119.90 ¥99.00
53 篇文章 34 订阅 ¥69.90 ¥99.00

专栏目录:
OpenLayers实战进阶专栏目录

前言

本篇文章通过国内的省、自治区和直辖市的GeoJson数据作为行政区划边界数据,然后根据用户定位位置,通过OpenLayers计算得到用户所在行政区划,并使用OpenLayers高亮显示用户所在行政区划边界。
openlayers
本章是综合应用场景,所以代码稍稍有些复杂,对于新入门读者可能难以上手,因此下面提供本文中使用到的技术,方便大家拆分参考,容易上手:

  1. 加载GeoJson数据渲染行政区划边界参考文章
    OpenLayers入门,OpenLayers如何加载GeoJson数据并叠加到OpenLayers矢量图层上

  2. 获取用户定位位置参考文章
    OpenLayers实战,Openlayers获取浏览器当前用户的经纬度位置并定位到对应位置

  3. 行政区划边界显示参考文章
    OpenLayers入门,OpenLayers从vue的assets资源路径加载geojson文件并解析数据叠加到地图上

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OpenLayers本身不能直接获取用户的详细地理位置,但可以使用浏览器的Geolocation API来获取用户的经纬度坐标,然后使用第三方的地理信息服务(如OpenStreetMap、Google Maps等)来获取用户的详细地理位置。 以下是一个使用Geolocation和OpenStreetMap获取用户当前位置并在地图上显示的示例代码: ```html <!DOCTYPE html> <html> <head> <title>OpenLayers Geolocation Example</title> <link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css"> <script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script> </head> <body> <div id="map" style="width: 100%; height: 500px;"></div> <script> // 创建地图 var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 }) }); // 获取用户位置 navigator.geolocation.getCurrentPosition(function(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; // 将用户位置转换为OpenLayers的坐标系 var point = ol.proj.fromLonLat([longitude, latitude]); // 在地图上添加一个标记,表示用户位置 var marker = new ol.Feature({ geometry: new ol.geom.Point(point) }); var layer = new ol.layer.Vector({ source: new ol.source.Vector({ features: [marker] }), style: new ol.style.Style({ image: new ol.style.Icon({ src: 'https://openlayers.org/en/v4.6.5/examples/data/icon.png' }) }) }); map.addLayer(layer); // 使用OpenStreetMap的Nominatim服务获取用户详细位置并显示在页面上 var url = 'https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=' + latitude + '&lon=' + longitude; fetch(url) .then(function(response) { return response.json(); }) .then(function(data) { var address = data.display_name; document.getElementById('location').innerHTML = 'Your location: ' + address; }); }); </script> <div id="location"></div> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汤姆猫不是猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值