首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OpenLayers -如何从现有lonLat点绘制多边形?

OpenLayers -如何从现有lonLat点绘制多边形?
EN

Stack Overflow用户
提问于 2010-10-23 15:37:44
回答 2查看 30K关注 0票数 23

我的数据库中有来自用户定义多边形的经纬度垂直度。我的问题是:现在如何在地图上重新创建和显示它们?使用Google Maps API很容易做到这一点,但是我找不到任何关于如何使用OpenLayers做到这一点的文档或示例。有没有人有过这样做的经验?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-24 13:12:29

经过大量的实验,我发现了如何做到这一点:

代码语言:javascript
复制
let sitePoints = [];
let siteStyle = {
  // style_definition
};

let epsg4326 = new OpenLayers.Projection("EPSG:4326");
for (let i in coordinates) {
  let coord = coordinates[i];
  let point = new OpenLayers.Geometry.Point(coord.lng, coord.lat);
  // transform from WGS 1984 to Spherical Mercator
  point.transform(epsg4326, map.getProjectionObject());
  sitePoints.push(point);
}
sitePoints.push(sitePoints[0]);

let linearRing = new OpenLayers.Geometry.LinearRing(sitePoints);
let geometry = new OpenLayers.Geometry.Polygon([linearRing]);
let polygonFeature = new OpenLayers.Feature.Vector(geometry, null, siteStyle);
vectors.addFeatures([polygonFeature]);
票数 42
EN

Stack Overflow用户

发布于 2020-06-19 14:47:56

OpenLayers 6

这与OpenLayers 6略有不同,我花了一段时间才弄明白。所以我在这里粘贴了OL6的相关代码。

coordinates的类型为[[number]]

styles超出了范围(如果有人感兴趣,我可以将其粘贴到此处,但每个应用程序都可以对其进行不同的定义)。

代码语言:javascript
复制
var VectorSource = ol.source.Vector;
var {Tile, Vector} = ol.layer; //import {Tile as TileLayer, Vector as VectorLayer} from 'ol/layer.js';
var TileLayer = Tile;
var VectorLayer = Vector;

var map = new ol.Map(...);

function drawPolygonOnMap(coordinates) {
    const polygonFeature = new ol.Feature(
        new ol.geom.Polygon(coordinates).transform('EPSG:4326','EPSG:3857'));


    let source = new VectorSource({
      features: [polygonFeature]
    });

    var layer = new VectorLayer({
      source: source,
      style: styles
    });

    map.addLayer(layer);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4002981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档