- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在用户将鼠标悬停在 map 的某个区域上超过几秒钟时显示带有属性的工具提示。
在此示例中,我试图在用户将鼠标悬停在该状态上时显示该状态名称。
我已经实现了工具提示,但没有显示状态名称。工具提示为空白。
我也不确定如何实现延迟。目前,只要鼠标悬停在 map 上,工具提示就会出现。
我需要它来使用 ArcGISDynamicMapServiceLayer。
这是 fiddle :
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Select Features</title>
<!-- Configure dojo for asynchronous module loading -->
<script>
var dojoConfig = {
async: true
};
</script>
<link rel="stylesheet" href="https://js.arcgis.com/3.18/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="https://js.arcgis.com/3.18/esri/css/esri.css">
<script src="https://js.arcgis.com/3.18/"></script>
</head>
<body class="claro">
<div id="bcMain" data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="design:'headline', liveSplitters:'true'">
<div id="cpCenter" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
<div id="divMap"></div>
<div id="divRenderer">
</div>
</div>
<div id="cpBottom" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:'true', region:'bottom'">
<div id="divGrid"></div>
</div>
</div>
</body>
</html>
JS:
// @formatter:off
require([
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/layers/FeatureLayer",
"esri/toolbars/draw",
"esri/graphic",
"esri/tasks/query",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/SimpleMarkerSymbol",
"dojo/ready",
"dojo/parser",
"dojo/on",
"dojo/dom",
"dojo/store/Memory",
"dojo/date/locale",
"dojo/_base/Color",
"dojo/_base/declare",
"dojo/_base/array",
"dgrid/OnDemandGrid",
"dgrid/Selection",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane",
"dijit/form/Button"],
function (Map, ArcGISDynamicMapServiceLayer, FeatureLayer, Draw, Graphic,
SimpleFillSymbol, SimpleLineSymbol, SimpleMarkerSymbol, Query,
ready, parser, on, dom,
Memory, locale,
Color, declare, array,
Grid, Selection,
BorderContainer, ContentPane, Button) {
// @formatter:on
ready(function () {
parser.parse();
var sUrlUSAService = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer";
var mapMain = new Map("divMap", {
basemap: "satellite",
center: [-119.65, 36.87],
zoom: 4
});
var lyrUSA = new ArcGISDynamicMapServiceLayer(sUrlUSAService, {
opacity: 0.5
});
lyrUSA.setVisibleLayers([2]);
mapMain.addLayers([lyrUSA]);
var infoTemplate = new esri.InfoTemplate("<b>State Name</b>","${STATE_NAME}");
dojo.connect(mapMain, "onMouseMove", function(evt) {
mapMain.graphics.clear();
var graphic = new esri.Graphic(evt.mapPoint, null);
graphic.setInfoTemplate(infoTemplate);
mapMain.graphics.add(graphic);
mapMain.infoWindow.show(evt.screenPoint, mapMain.getInfoWindowAnchor(evt.screenPoint));
});
});
});
CSS:
html, body, #divMap {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
body {
background-color: #FFF;
overflow: hidden;
font-family: "Trebuchet MS";
}
#bcMain {
width: 100%;
height: 100%;
}
#divRenderer {
position: absolute;
left: 27px;
bottom: 27px;
}
#cpBottom {
height: 100px;
}
#divGrid {
height: 100%;
}
.dgrid {
border: none;
}
.field-eqid {
width: 100px;
}
.field-datetime {
width: 160px;
}
.field-magnitude {
width: 60px;
}
.field-longitude {
width: 100px;
}
.field-latitude {
width: 100%;
}
最佳答案
我相信我有解决办法。将鼠标悬停在 map 上的某个点上 4 秒后,将弹出带有州名的信息模板。
需要回调到服务器,因为我们使用的是 ArcGISDynamicMapServiceLayer 而不是 FeatureLayer。
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Select Features</title>
<!-- Configure dojo for asynchronous module loading -->
<script>
var dojoConfig = {
async: true
};
</script>
<link rel="stylesheet" href="https://js.arcgis.com/3.18/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="https://js.arcgis.com/3.18/esri/css/esri.css">
<script src="https://js.arcgis.com/3.18/"></script>
</head>
<body class="claro">
<div id="bcMain" data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="design:'headline', liveSplitters:'true'">
<div id="cpCenter" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
<div id="divMap"></div>
<div id="divRenderer">
</div>
</div>
<div id="cpBottom" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:'true', region:'bottom'">
<div id="divGrid"></div>
</div>
</div>
</body>
</html>
JS:
var mapMain, infoTemplate;
// @formatter:off
require([
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/layers/FeatureLayer",
"esri/toolbars/draw",
"esri/graphic",
"esri/tasks/query",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/SimpleMarkerSymbol",
"dojo/ready",
"dojo/parser",
"dojo/on",
"dojo/dom",
"dojo/store/Memory",
"dojo/date/locale",
"dojo/_base/Color",
"dojo/_base/declare",
"dojo/_base/array",
"dgrid/OnDemandGrid",
"dgrid/Selection",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane",
"dijit/form/Button"],
function (Map, ArcGISDynamicMapServiceLayer, FeatureLayer, Draw, Graphic,
SimpleFillSymbol, SimpleLineSymbol, SimpleMarkerSymbol, Query,
ready, parser, on, dom,
Memory, locale,
Color, declare, array,
Grid, Selection,
BorderContainer, ContentPane, Button) {
// @formatter:on
ready(function () {
parser.parse();
var sUrlUSAService = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer";
mapMain = new Map("divMap", {
basemap: "satellite",
center: [-119.65, 36.87],
zoom: 4
});
var lyrUSA = new ArcGISDynamicMapServiceLayer(sUrlUSAService, {
opacity: 0.5
});
lyrUSA.setVisibleLayers([2]);
mapMain.addLayers([lyrUSA]);
infoTemplate = new esri.InfoTemplate("<b>State Name</b>","${state_name}");
queryTask = new esri.tasks.QueryTask(sUrlUSAService+"/2");
//build query filter
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["state_name"];
dojo.connect(mapMain, "onMouseMove", executeQueryTask);
//create the infoTemplate to be used in the infoWindow.
//All ${attributeName} will be substituted with the attribute value for current feature.
});
});
var lastMapPoint, screenPoint;
function executeQueryTask(evt) {
setTimeout(function(){
if (lastMapPoint==evt.mapPoint) {
query.geometry = evt.mapPoint;
screenPoint = evt.screenPoint;
event = evt;
//Execute task and call showResults on completion
queryTask.execute(query, showResults);
}
},4000);
mapMain.infoWindow.hide();
lastMapPoint = evt.mapPoint;
}
function showResults(featureSet) {
//remove all graphics on the maps graphics layer
mapMain.graphics.clear();
var features = featureSet.features;
//QueryTask returns a featureSet. Loop through features in the featureSet and add them to the map.
dojo.forEach(features,function(feature){
var graphic = feature;
// graphic.setSymbol(new esri.symbol.SimpleMarkerSymbol());
//Set the infoTemplate.
graphic.setInfoTemplate(infoTemplate);
//Add graphic to the map graphics layer.
mapMain.graphics.add(graphic);
mapMain.infoWindow.setContent(graphic.getContent());
mapMain.infoWindow.setTitle(graphic.getTitle());
mapMain.infoWindow.show(screenPoint,mapMain.getInfoWindowAnchor(screenPoint));
});
}
CSS:
html, body, #divMap {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
body {
background-color: #FFF;
overflow: hidden;
font-family: "Trebuchet MS";
}
#bcMain {
width: 100%;
height: 100%;
}
#divRenderer {
position: absolute;
left: 27px;
bottom: 27px;
}
#cpBottom {
height: 100px;
}
#divGrid {
height: 100%;
}
.dgrid {
border: none;
}
.field-eqid {
width: 100px;
}
.field-datetime {
width: 160px;
}
.field-magnitude {
width: 60px;
}
.field-longitude {
width: 100px;
}
.field-latitude {
width: 100%;
}
关于javascript - 在鼠标悬停时在 map 上显示工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361343/
这个问题在这里已经有了答案: Android ADT version required 20.0.0 and above (10 个答案) 关闭 9 年前。 我刚刚安装了 Eclipse Juno
按照 This page from codeplex 上的指南进行操作后,我无法在我的工具/选项窗口中看到 Python 选项。我认为我与指南的唯一偏差是: 发行版:没有安装 activestate
我有一个非常大的 .sql 脚本。我将此脚本添加到 Visual Studio 2013 下的 SQL Server 项目中。当我尝试构建它时,我收到此错误消息 This T-SQL script e
当我在SpringBoot项目中想加个依赖,但是不确定现有依赖的依赖的依赖.....有没有添加过这个依赖,怎么办呢?如果添加过了但是不知道我需要的这个依赖属于哪个依赖的下面,怎么查呢? IDEA中提供
我正在做一个项目来减少 PDF 的大小,压缩它们。我想知道市场上是否有任何非常好的工具/库(.NET)。 我确实尝试了一些像 Onstream Compression 这样的工具,但结果并不令人满意。
我想从我的源代码编译一个安卓内核。 但我想使用工具或类似的东西。 所以我只需单击一个按钮并获得一个可闪存的 zip 文件... 有工具吗? 我可以用脚本来做吗? 谢谢! 最佳答案 这取决于您从哪里获得
我们生成 pdf 文件,其中包含有关数万名客户每月财务余额的数据。在高峰期(年底有 100.000 个文件),使用在 5 台服务器之间分配负载,该过程可能需要长达 5 天的时间才能完成。工作负载的分配
模块:xmllib xmllib 是一个非验证的低级语法分析器。应用程序员使用的 xmllib 可以覆盖 XMLParser 类,并提供处理文档元素(如特定或类属标记,或字符实体)的方法。从 Py
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 3 年前。
我在一家医疗保健公司工作,拥有有关患者位置(地址、城市、州、 zip )的信息。我试图确定有多少百分比的患者住在离 5 个特定位置最近的地方。我正在寻找的答案是“25% 的患者住在离#1 地点最近的地
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 4年前关闭。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
请问我在哪里可以得到 SvcTraceViewer 工具? 我尝试下载并安装许多 SDK。 我查看了程序文件的垃圾箱。 我需要它来跟踪我的 WCF 调用出了什么问题。 最佳答案 您可以通过下载 Win
我正在尝试在我最喜欢的编辑器中设置适当的代码完成功能,我们将其称为AnEditor,以避免互联网上充斥着特定于程序的答案。 (您知道语言是ALanguage。)编辑器具有两个我喜欢的功能:它既可以在控
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
当 merge 的两个分支对同一文件有更改时,Mercurial 是否总是使用外部 merge 工具? 或者它是否首先查看它是否可以 merge 文件本身,如果不能,则仅转向外部工具? 我问的原因是我
我正在为我使用的编辑器编写 Scala 插件,该插件将突出显示所有未使用的代码路径(可能未使用 defs 、 vals 、 classes 和 implicits ),并为用户提供一个选项以将它们从.
我有 jquery 工具滚动器...我喜欢它只为 swipeLeft swipeRight 实现触摸选项。 当我使用 touch: true 时,它也会在向上/向下滑动时旋转.. 我按照此处的说明
我已经尝试了一些用于构建 UML(对象/依赖图)的 Eclipse 工具,但我真正需要的是一个工具来生成这样的代码外 UML。 (反之亦然) 我更喜欢一个简单的 UML 工具,它易于安装并且没有任何依
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我是一名优秀的程序员,十分优秀!