javascript-更新openlayers 3中要素的坐标
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-更新openlayers 3中要素的坐标,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1686字,纯文字阅读大概需要3分钟。
内容图文
![javascript-更新openlayers 3中要素的坐标](/upload/InfoBanner/zyjiaocheng/663/5da6186ed4f949ef998438e4549d046e.jpg)
我在javascript中有一个模型,该模型具有经度和纬度值.我必须通过元素ID在地图上找到要素,并更新其位置和其他几个属性.我的代码如下所示:
function updateCoordinate(item) {
var features = source.getFeatures();
var featureToUpdate;
// find feature by custom property
for(var i=0; i< features.length; i++) {
if (features[i].get('ID') == item.ID) {
featureToUpdate = features[i];
break;
}
}
// get lon, lat from input item
var lon = item.Coordinate.Longitude;
var lat = item.Coordinate.Latitude;
// update geometry (not working)
featureToUpdate.set('Geometry', new ol.geom.Point(getPointFromLongLat(lon, lat)));
// update custom properties (working)
featureToUpdate.set('MapMarkerTitle', item.Title);
// ...
}
function getPointFromLongLat (long, lat) {
return ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857')
}
难道我做错了什么?有更好的方法吗?是否有更好的方法通过自定义属性查找功能?
通过自定义属性,我的意思是该功能正在这样启动:
var fea = new ol.Feature({
geometry: new ol.geom.Point(getPointFromLongLat(lon, lat)),
MapMarkerTitle : 'AAA',
// ...
})
source.addFeatures([fea]);
自定义属性正在更新,但是坐标似乎没有更新.更新位置后会重画特征吗?标签被重新绘制,所以我认为是的.
更新
经过一些调试后,我发现,我用大写字母拼写了’geometry’属性.
其实:
featureToUpdate.set('geometry', new ol.geom.Point(getPointFromLongLat(lon, lat)));
确实设置了新位置并立即更新了位置.我仍然想知道我在做什么是好方法还是有更好的方法.谢谢!
解决方法:
您可以将其简化为:
function updateCoordinate(item) {
var featureToUpdate = source.getFeatureById(item.ID);
var coord = getPointFromLongLat(item.Coordinate.Longitude, item.Coordinate.Latitude);
featureToUpdate.getGeometry().setCoordinates(coord);
featureToUpdate.set('MapMarkerTitle', item.Title);
}
内容总结
以上是互联网集市为您收集整理的javascript-更新openlayers 3中要素的坐标全部内容,希望文章能够帮你解决javascript-更新openlayers 3中要素的坐标所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。