OpenLayers在选择功能图像时发送GET请求,降低性能
我的代码工作得非常好,除了每次我单击/悬停在“标记”上时,openLayer都会尝试从本地服务器检索一些图像(.png)。这是我的代码,图像不是直接指定的。我不确定要覆盖什么以禁止此行为: 这是我得到的错误“onSelect”: 这是我的密码。我希望有人能帮上忙,因为重复的GET请求扼杀了性能OpenLayers在选择功能图像时发送GET请求,降低性能,openlayers,Openlayers,我的代码工作得非常好,除了每次我单击/悬停在“标记”上时,openLayer都会尝试从本地服务器检索一些图像(.png)。这是我的代码,图像不是直接指定的。我不确定要覆盖什么以禁止此行为: 这是我得到的错误“onSelect”: 这是我的密码。我希望有人能帮上忙,因为重复的GET请求扼杀了性能 var lonlat = convertProjectionToSphere(location); console.log(lonlat); var pointFeatures = [];
var lonlat = convertProjectionToSphere(location);
console.log(lonlat);
var pointFeatures = [];
var pointGeometry = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
var pointFeature = new OpenLayers.Feature.Vector(
pointGeometry,
null,
{
pointRadius: 16,
fillOpacity: 0.7,
externalGraphic:'img/mapIcons/Multi-Wave-test.png'
});
pointFeatures.push(pointFeature);
// Add features to the layer
var pointLayer = map.getLayer('Vectors');
pointLayer.addFeatures(pointFeatures);
// Add select feature control required to trigger events on the vector layer.
var selectControl = new OpenLayers.Control.SelectFeature(pointLayer, {
hover: true,
onSelect: function(feature) { // last point in my code from the stack trace
var layer = feature.layer;
feature.style.fillOpacity = 1;
feature.style.pointRadius = 20;
//layer.drawFeature(feature);
var content = '<div style="background-color:white;"><strong>Feature:</strong>'+
'<br/>' + feature.id +
'<br/><br/><strong>Location:</strong>'+
'<br/>' + feature.geometry +'</div>';
var popup = new OpenLayers.Popup.FramedCloud(
feature.id+"_popup",
feature.geometry.getBounds().
getCenterLonLat(),
new OpenLayers.Size(250, 100),
content,
null, // anchor
true, // closeBox exists
null); //closeBoxCallback
feature.popup = popup;
map.addPopup(popup);
},
onUnselect: function(feature) {
var layer = feature.layer;
feature.style.fillOpacity = 1;
feature.style.pointRadius = 16;
feature.renderIntent = null;
layer.drawFeature(feature);
map.removePopup(feature.popup);
}
});
map.addControl(selectControl);
selectControl.activate();
var lonlat=convertProjectionSphere(位置);
控制台日志(lonlat);
var pointFeatures=[];
var pointGeometry=newopenlayers.Geometry.Point(lonlat.lon,lonlat.lat);
var pointFeature=new OpenLayers.Feature.Vector(
点几何,
无效的
{
点半径:16,
不透明度:0.7,
外部图形:“img/mapIcons/Multi-Wave test.png”
});
pointFeatures.push(pointFeature);
//向图层添加要素
var pointLayer=map.getLayer('Vectors');
pointLayer.addFeatures(pointFeatures);
//添加触发向量层上的事件所需的选择要素控件。
var selectControl=new OpenLayers.Control.SelectFeature(pointLayer{
哈弗:没错,
onSelect:function(feature){//堆栈跟踪代码中的最后一点
var层=feature.layer;
feature.style.fillOpacity=1;
feature.style.pointRadius=20;
//图层特征(特征);
var content='功能:'+
“
”+feature.id+
“
位置:”+
“
”+feature.geometry+”;
var popup=new OpenLayers.popup.FramedCloud(
feature.id+“\u弹出窗口”,
feature.geometry.getBounds()。
getCenterLonLat(),
新OpenLayers.尺寸(250100),
内容,,
null,//锚点
true,//closeBox存在
null);//closeBoxCallback
feature.popup=弹出窗口;
map.addPopup(弹出窗口);
},
ONONSELECT:功能(特性){
var层=feature.layer;
feature.style.fillOpacity=1;
feature.style.pointRadius=16;
feature.renderInt=null;
图层特征(特征);
map.removeppopup(feature.popup);
}
});
map.addControl(selectControl);
选择control.activate();
您正在使用“”弹出窗口。OpenLayers要加载的图像是该弹出窗口的边界。图像包含在OpenLayers发行版附带的“img”文件夹中。
您可以通过OpenLayers.ImgPath更改图像文件夹的路径。这是一本书。
或者,您可以使用更简单的弹出式样式,如“锚定”。我认为它不使用图像作为框架
var lonlat = convertProjectionToSphere(location);
console.log(lonlat);
var pointFeatures = [];
var pointGeometry = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
var pointFeature = new OpenLayers.Feature.Vector(
pointGeometry,
null,
{
pointRadius: 16,
fillOpacity: 0.7,
externalGraphic:'img/mapIcons/Multi-Wave-test.png'
});
pointFeatures.push(pointFeature);
// Add features to the layer
var pointLayer = map.getLayer('Vectors');
pointLayer.addFeatures(pointFeatures);
// Add select feature control required to trigger events on the vector layer.
var selectControl = new OpenLayers.Control.SelectFeature(pointLayer, {
hover: true,
onSelect: function(feature) { // last point in my code from the stack trace
var layer = feature.layer;
feature.style.fillOpacity = 1;
feature.style.pointRadius = 20;
//layer.drawFeature(feature);
var content = '<div style="background-color:white;"><strong>Feature:</strong>'+
'<br/>' + feature.id +
'<br/><br/><strong>Location:</strong>'+
'<br/>' + feature.geometry +'</div>';
var popup = new OpenLayers.Popup.FramedCloud(
feature.id+"_popup",
feature.geometry.getBounds().
getCenterLonLat(),
new OpenLayers.Size(250, 100),
content,
null, // anchor
true, // closeBox exists
null); //closeBoxCallback
feature.popup = popup;
map.addPopup(popup);
},
onUnselect: function(feature) {
var layer = feature.layer;
feature.style.fillOpacity = 1;
feature.style.pointRadius = 16;
feature.renderIntent = null;
layer.drawFeature(feature);
map.removePopup(feature.popup);
}
});
map.addControl(selectControl);
selectControl.activate();