OpenLayers-创建多边形Polygon-创新互联
OpenLayers版本:4.6.4
我们提供的服务有:成都网站设计、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、新城ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新城网站制作公司叨叨:
本来这不应该成为一个问题,也不值得专门写一篇文章,尤其是对一个已经用过各种MapAPI(Google、百度、高德、SmartEarth...)的人来说,但就是这个本来以为3分钟解决的问题我却用了至少30分钟才把坑填完,最后发现OpenLayers的好多设计理念、思路都和之前用过的API大不相同。
需求:
需求很简单,其实就是用代码把一串经纬度坐标表示的Polygon添加在Map上,注意这里不是创建地图交互工具来用鼠标画Polygon,也不是用GeoJSON或WKT作为数据源,而是用代码手动实现,因为后者OL官网都有示例,前者我并没有找到(可能是因为我英文太烂,如果哪位发现有这样的示例请告诉我)
正题:
我先把最后的代码贴出来,再来分析我踩的那些坑
创建Map的过程我封装了一下,基本是最简化的配置,没什么特殊的
坑1:Polygon的构造函数,按照过往经验给一个Point的数组就好了,但是在OL中是一个Point的数组的数组,这还好,最起码在API中能看到,最坑的就是下面的坑;
坑2:一定要做坐标转换,其实折腾了半天我就是缺这一句代码,至于投影坐标系这些东西我还晕着呢,大家自己悟吧。
polygon.applyTransform(ol.proj.getTransform('EPSG:4326', 'EPSG:3857'));
最后要把polygon显示出来需要这样一个流程:
polygon封装到Feature --> feature添加到source --> 通过source创建vector layer --> 把layer添加到map上。
这就是为什么我开始说OL在设计理念上和之前接触的大不相同,之前的大部分API直接通过map.addxxx 函数就可以添加覆盖物,也许要用OL就得把之前自己想当然的那些经验都扔掉。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:OpenLayers-创建多边形Polygon-创新互联
本文URL:http://cdiso.cn/article/disgsd.html