- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在尝试升级应用程序中的 map ,这里有 OL2 和 OL3 之间的很多差异。我们希望根据数据将不同的图标(图像)应用于我们的 map ,例如如果项目状态已打开 - 则使用此图标,如果项目状态已关闭 - 则使用另一个图标,依此类推。到目前为止,我们能够将一种图标应用于所有项目。但无法弄清楚如何使用多个。我已经创建了多种样式并应用于功能,但是它与随机数配合得很好,但是当我尝试对数据库(数组格式)中的数据使用相同的代码时,它看起来像是将第一种样式应用于整个大量项目。
这是我的 JS 代码:
(function(){
var vectorSource = new ol.source.Vector({
//create empty vector
});
(function(){
var vectorSource2 = new ol.source.Vector({
//create another empty vector
});
//create a bunch of icons and add to source vector
for (var i=0;i<10;i++){
var budget = 'Budget:£133,876.99';
var proj_manager = 'Craig Morgan';
var href = '<a href="http://www.bbc.co.uk">View Project</a>';
var iconFeature = new ol.Feature({
geometry: new
ol.geom.Point(ol.proj.transform([Math.random()*360-180, Math.random()*180-90], 'EPSG:4326', 'EPSG:3857')),
name: 'Project' + i +'<br>'+href +'<br>'+ proj_manager +'<br>' + budget,
icon_a: 'map-icon-small.png '
});
vectorSource.addFeature(iconFeature);
}
for (var i=0;i<15;i++){
var budget = 'Money:£100,555.11';
var proj_manager = 'Bob Johnson';
var href = '<a href="http://www.cnn.com">View Project</a>';
var iconFeature2 = new ol.Feature({
geometry: new
ol.geom.Point(ol.proj.transform([Math.random()*360-180, Math.random()*180-90], 'EPSG:4326', 'EPSG:3857')),
name: 'Project' + i +'<br>'+href +'<br>'+ proj_manager +'<br>' + budget,
icon_b: 'googleMapPointer.png '
});
vectorSource2.addFeature(iconFeature2);
}
//create the style
var iconStyle = new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 0.5],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.75,
src: "http://obermain.com/assets/images/general/"+ iconFeature.get('icon_a')
}))
});
/************** adding another style **********************/
var iconStyle2 = new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 0.5],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 1,
src: "http://www.stsoman.com/images/"+ iconFeature2.get('icon_b')
}))
});
//add the feature vector to the layer vector, and apply a style to whole layer
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: iconStyle
});
var vectorLayer2 = new ol.layer.Vector({
source: vectorSource2,
style: iconStyle2
});
/************ set up the map *********************/
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()}),
vectorLayer, vectorLayer2],
target: document.getElementById("map"),
view: new ol.View({
center: [0, 0],
zoom: 4
})
});
/********************* getting popup element by id *********************************/
var element = document.getElementById('popup');
var popup = new ol.Overlay({
element: element,
autoPan: true,
positioning: 'center-center',
stopEvent: false
});
map.addOverlay(popup);
// display popup on click
map.on('click', function (evt) {
var feature = map.forEachFeatureAtPixel(evt.pixel,
function (feature, layer) {
return feature;
});
if (feature) {
var geometry = feature.getGeometry();
var coord = geometry.getCoordinates();
popup.setPosition(coord);
$(element).popover({
'placement': 'auto top',
'html': true,
'content': feature.get('name')
});
$(element).popover('show');
//FIX THAT MESSES UP THE POSITION OF THE POPOVER
$('.popover-content').html( '<pre>' + feature.get('name') + '</pre>' );
} else {
$(element).popover('destroy');
}
});
// change mouse cursor when over marker
map.on('pointermove', function (e) {
if (e.dragging) {
$(element).popover('destroy');
return;
}
var pixel = map.getEventPixel(e.originalEvent);
var hit = map.hasFeatureAtPixel(pixel);
map.getTarget().style.cursor = hit ? 'pointer' : '';
});
})();
})();
这是 HTML:
<script src="ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>
<script src="http://openlayers.org/en/v3.10.1/build/ol.js"></script>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.6.0/ol.js"></script>
<div id="map"></div>
<div id="popup"></div>
所以上面的代码工作得很好,但是,当我创建 PL/SQL 包并从数据库获取数据时,第一个样式应用于所有项目。我如何指定哪个项目应用确切的样式(图标)。从数据库中获取的数据是数组格式的,如果我手动将其插入到代码中,它也可以很好地工作。有什么帮助吗?谢谢
最佳答案
您没有展示如何存储以及如何从数据库读取。但解决方案可以是:在每个功能上存储一个标识符,以便您在阅读时可以基于它。
也许:
new ol.Feature({
geometry: new ol.geom.Point(),
project: project_identifier // <---- you are saving these properties on db, right?
});
假设您从数据库获取一个数组:
array_features.forEach(function(feature){
// whose project are you
var project = feature.get('project');
// decide what you do
});
关于javascript - 根据 Openlayers 3 中获取的数据应用自定义图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33688502/
我需要您在以下方面提供帮助。近一个月来,我一直在阅读有关任务和异步的内容。 我想尝试在一个简单的 wep api 项目中实现我新获得的知识。我有以下方法,并且它们都按预期工作: public Htt
我的可执行 jar 中有一个模板文件 (.xls)。不需要在运行时我需要为这个文件创建 100 多个副本(稍后将唯一地附加)。用于获取 jar 文件中的资源 (template.xls)。我正在使用
我在查看网站的模型代码时对原型(prototype)有疑问。我知道这对 Javascript 中的继承很有用。 在这个例子中... define([], function () { "use
影响我性能的前三项操作是: 获取滚动条 获取偏移高度 Ext.getStyle 为了解释我的应用程序中发生了什么:我有一个网格,其中有一列在每个单元格中呈现网格。当我几乎对网格的内容做任何事情时,它运
我正在使用以下函数来获取 URL 参数。 function gup(name, url) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/,
我最近一直在使用 sysctl 来做很多事情,现在我使用 HW_MACHINE_ARCH 变量。我正在使用以下代码。请注意,当我尝试获取其他变量 HW_MACHINE 时,此代码可以完美运行。我还认为
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么
由于使用 main-bower-files 作为使用 Gulp 的编译任务的一部分,我无法使用 node_modules 中的 webpack 来require 模块code> dir 因为我会弄乱当
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我使用 Gridlayout 在一行中放置 4 个元素。首先,我有一个 JPanel,一切正常。对于行数变大并且我必须能够向下滚动的情况,我对其进行了一些更改。现在我的 JPanel 上添加了一个 J
由于以下原因,我想将 VolumeId 的值保存在变量中: #!/usr/bin/env python import boto3 import json import argparse import
我正在将 MSAL 版本 1.x 更新为 MSAL-browser 的 Angular 。所以我正在尝试从版本 1.x 迁移到 2.X.I 能够成功替换代码并且工作正常。但是我遇到了 acquireT
我知道有很多关于此的问题,例如 Getting daily averages with pandas和 How get monthly mean in pandas using groupby但我遇到
This is the query string that I am receiving in URL. Output url: /demo/analysis/test?startDate=Sat+
我正在尝试使用 javascript 中的以下代码访问 Geoserver 层 var gkvrtWmsSource =new ol.source.ImageWMS({ u
API 需要一个包含授权代码的 header 。这就是我到目前为止所拥有的: var fullUrl = 'https://api.ecobee.com/1/thermostat?json=\{"s
如何获取文件中的最后一个字符,如果是某个字符,则删除它而不将整个文件加载到内存中? 这就是我目前所拥有的。 using (var fileStream = new FileStream("file.t
我是这个社区的新手,想出了我的第一个问题。 我正在使用 JSP,我成功地创建了 JSP-Sites,它正在使用jsp:setParameter 和 jsp:getParameter 具有单个字符串。
在回答 StoreStore reordering happens when compiling C++ for x86 @Peter Cordes 写过 For Acquire/Release se
我有一个函数,我们将其命名为 X1,它返回变量 Y。该函数在操作 .on("focusout", X1) 中使用。如何获取变量Y?执行.on后X1的结果? 最佳答案 您可以更改 Y 的范围以使其位于函
我是一名优秀的程序员,十分优秀!