在开放图层库中,下面是用于将屏幕坐标转换为经纬度的方法。我无法弄清楚此方法封装的逻辑?
getLatLonFromPoint: function (point) {
var center = this.getCenter();
//map center lat/lon
var res = this.getResolution();
//pre defined by the user. Represents the change in lat long per screen unit at the given zoom level
var size = this.getSize();
//this is the width and height of the div in which the map has to be displayed
var delta_x = point.x - (size.w / 2);
var delta_y = point.y - (size.h / 2);
return new OpenLayers.LatLon(
center.lat - delta_y * res, … 我有一个OpenLayers地图对象,我已经将标记添加到图层,并将其添加到地图中.
但是如何确保所有标记都在显示区域?
谢谢,
吉尔
我可以使用在开放层地图上添加标记Openlayers.Layer.markers.但我不能用这个 OpenLayers.Feature.Vector吗?.任何人都可以帮助我..请...提前谢谢
此致,Boomiraj.P
我想在我的地图中更新一些弹出窗口,但我无法做到这一点.
首先,我创建了一些标记,然后使用下一个代码创建一个与它们关联的弹出窗口.每个标记一个弹出窗口:
popFeature = new OpenLayers.Feature(markers, location);
popFeature.closeBox = true;
popFeature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
'autoSize': true
});
popFeature.data.popupContentHTML = "hello";
popFeature.data.overflow = (false) ? "auto" : "hidden";
var markerClick = function (evt) {
if (this.popup == null) {
this.popup = this.createPopup(this.closeBox);
map.addPopup(this.popup);
this.popup.show();
} else {
this.popup.toggle();
}
currentPopup = this.popup;
OpenLayers.Event.stop(evt);
};
mark.events.register("mousedown", popFeature, markerClick);
Run Code Online (Sandbox Code Playgroud)
之后,我将新标记添加到我的标记图层.
一切都很好,直到这里,但是,我想稍后更新popupcontentHTML,我不知道如何访问该值.
我读了OL API,但我不明白如何得到它.我迷失了功能,事件,扩展......
我想知道我是否可以访问该属性并写下其他单词.
我已经构建了一个 OpenLayers 地图,它从目录(存储在 z\x\y 结构中,例如 1/1/0.png 中)读取图块数据并将其呈现在地图图层上。然后我创建一个矢量图层并为用户提供工具,以便在地图上绘制各种类型的形状(点、路径、多边形等)。下面是代码:
function initialiseMap() {
var options = {
controls: [],
maxExtent: new OpenLayers.Bounds(0.0, -72448.0, 142848.0, 0.0),
maxResolution: 1024.000000,
numZoomLevels: 10
};
map = new OpenLayers.Map(imageEditorID, options);
imageLayer = new OpenLayers.Layer.TMS(imgURL, "", {
url: '',
serviceVersion: '.',
layername: '.',
alpha: true,
type: 'png',
getURL: overlay_getTileURL,
transitionEffect: 'resize'
});
map.addLayer(imageLayer);
var vlayer = new OpenLayers.Layer.Vector("Editable");
map.addLayer(vlayer);
var overview = new OpenLayers.Control.OverviewMap({
maximized: true,
maximizeTitle: 'Show the overview map',
minimizeTitle: 'Hide the overview map'
});
var zoomToDrawControl …Run Code Online (Sandbox Code Playgroud) 我一直在研究openlayers的动画功能,并且可以看到使用以下命令缩放到给定的点和分辨率有多么简单
view.animate({
center: position,
zoom: 11
});
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何制作动画
map.getView().fit(extent, map.getSize());
Run Code Online (Sandbox Code Playgroud)
有人可以给我一些指示吗?
提前致谢
我有一个多边形矢量对象的地图.
多边形之间可以存在叠加.也就是说,更大的多边形有时完全高于较小的多边形.
使用Openlayers,是否可以显示两个弹出窗口而不是一个弹出窗口(第一个弹出窗口与上面的多边形相关,第二个弹出窗口与底部的多边形相关)?或者一个包含两个多边形属性的弹出窗口?
我寻找信息,但没有发现很多东西.有主题(用弹出窗口显示多个WFS图层)但没有答案.
非常感谢您的帮助 !
我想知道是否有人可以指出我正确的方向.我正在尝试使用OpenLayers 4.6.4向OSM地图添加多个标记/图标.
以下代码呈现地图没有任何问题:
<script src="https://openlayers.org/en/v4.6.4/build/ol.js"></script>
<script type='text/javascript'>
var map = new ol.Map({
target: 'mapdiv',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([-0.1526069, 51.4790309]),
zoom: 14
})
});
</script>
Run Code Online (Sandbox Code Playgroud)
我已经尝试在OpenLayers网站上搜索有关如何添加标记的信息,但它表明标记已被弃用!我想要做的就是在地图上添加一些图钉/标记来显示网站位置.
我也尝试过其他版本的OpenLayers 2.13.1,2.14和3.0但没有任何成功.
任何帮助将不胜感激.
是否可以清理受污染的帆布?
我有一个Openlayers地图,用户可以在其中添加具有CORS限制的图层.我不能通过我的代理配置绕过cors并且crossOrigin ='anonymus'不是一个选项.
我需要的是能够移除" 坏 "图层并让用户生成地图图像.
所以我试着:
但我总是得到cors错误.如何在不刷新浏览器的情况下再次使我的地图变得更好?
我想创建一个基于OSM底图的网络地图,但我只需要我需要分析的特定国家/地区的图块.这样做的原因是我想避免在用户拖动地图时加载更多的图块,从而增加下载的数据和加载时间.
我不是在本地寻找tile开发,而是在设置OpenLayers 3参数来限制OSM baselayer渲染.
有办法吗?
openlayers ×10
javascript ×4
openlayers-3 ×3
gis ×1
html2canvas ×1
html5-canvas ×1
mapping ×1
marker ×1
markers ×1
popup ×1