- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
需要一张葡萄牙 map ,用户可以在点击时选择地区,我关注了this example和 this one .问题是我为每个要绘制为多边形的地区使用 KML 文件,而不是为所有地区多边形使用 KML。
已经在这里搜索了很多问题,还尝试更改 useTheData () 回调函数以包含一个额外的 for 循环,如下所示,但没有成功...
function useTheData(doc) {
var sidebarHtml = '<table><tr><td><a href="javascript:showAll();">Show All</a></td></tr>';
for (var j = 0; j < doc.length ; j++) {
...
}
sidebarHtml += "</table>";
document.getElementById("map_barralateral").innerHTML = sidebarHtml;
};
将鼠标悬停在 map 上的地区工作正常,但是当单击侧边栏上的突出显示链接时,它默认突出显示使用列表的最后一个 KML 文件创建的多边形...
有办法解决这个问题吗?
我的完整代码在这里:http://afonsogomes.com/mapas
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="utf-8">
<title>XXXXX</title>
<style>
html,body {margin: 0;padding: 0;}
#map_canvas, #map_barralateral {width: 300px;height: 500px;margin: 0;padding: 0;float: left;background-color: #e5e3df;}
#map_canvas{height: 520px;}
#map_barralateral{width: 300px;font-family: Arial, sans-serif;font-size: 12px;padding: 10px;}
#loaddiv {width: 620px;background-color: #78A04C;border: none;padding: 20px 0;font-family: Arial, sans-serif;color: #FFF;font-weight: 700;text-align: center;position: absolute;left: 0;top: 200px;margin: 0 auto;filter: alpha(opacity=90);opacity: .90;z-index: 100;}
</style>
<script src="../js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/branches/polys/geoxml3.js"></script>
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/trunk/ProjectedOverlay.js"></script>
<script>
var geoXml = null;
var geoXmlDoc = null;
var map = null;
var myLatLng = null;
var myGeoXml3Zoom = true;
var sidebarHtml = "";
var filename_example = ["kml/porto.kml", "kml/faro.kml", "kml/braganca.kml", "kml/evora.kml"];
function initialize() {
myLatLng = new google.maps.LatLng(39.96293, -8.03770);
var myOptions = {
zoom: 18,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
showLoad();
geoXml = new geoXML3.parser({
map: map,
zoom: myGeoXml3Zoom,
suppressInfoWindows: true,
singleInfoWindow: false,
afterParse: useTheData
});
google.maps.event.addListener(geoXml, 'parsed', function () {
hideLoad();
});
geoXml.parse(filename_example);
};
function kmlHighlightPoly(poly) {
for (var i = 0; i < geoXmlDoc.gpolygons.length; i++) {
if (i == poly) {
geoXmlDoc.gpolygons[i].setOptions({ fillColor: "#0000FF", strokeColor: "#0000FF" });
} else {
geoXmlDoc.gpolygons[i].setOptions({ fillColor: "#FF0000", strokeColor: "#FF0000" });
}
}
}
function showAll() {
map.fitBounds(geoXmlDoc.bounds);
for (var i = 0; i < geoXmlDoc.gpolygons.length; i++) {
geoXmlDoc.gpolygons[i].setMap(map);
}
}
function highlightPoly(poly) {
google.maps.event.addListener(poly, "mouseover", function () {
poly.setOptions({ fillColor: "#FF0000", strokeColor: "#FF0000" });
});
google.maps.event.addListener(poly, "mouseout", function () {
poly.setOptions({ fillColor: "#78A04C", strokeColor: "#78A04C", fillOpacity: 0.4 });
});
}
function useTheData(doc) {
var sidebarHtml = '<table><tr><td><a href="javascript:showAll();">Show All</a></td></tr>';
for (var j = 0; j < doc.length ; j++) { // Added by me to parse all kml files to the map
geoXmlDoc = doc[j];
for (var i = 0; i < doc[j].gpolygons.length; i++) {
sidebarHtml += '<tr><td>' + doc[j].placemarks[i].name + ' - <a href="javascript:kmlHighlightPoly(' + j + ');">highlight</a><br></td></tr>';
highlightPoly(doc[j].gpolygons[i]);
}
}
sidebarHtml += "</table>";
document.getElementById("map_barralateral").innerHTML = sidebarHtml;
};
function hideLoad() {
var loaddiv = document.getElementById("loaddiv");
if (loaddiv == null) {
alert("Sorry can't find the loaddiv");
return;
}
loaddiv.style.visibility = "hidden";
}
function showLoad() {
var loaddiv = document.getElementById("loaddiv");
if (loaddiv == null) {
alert("Sorry can't find your loaddiv");
return;
}
loaddiv.style.visibility = "visible";
}
</script>
</head>
<body onload="initialize()">
<div id="loaddiv">A carregar.....    Por favor aguarde!</div>
<div id="map_canvas"></div>
<div id="map_barralateral"></div>
<div id="map_status"></div>
</body>
</html>
最佳答案
您还需要修改 kmlHighlightPoly 以考虑使用多个 KML 文件:
function kmlHighlightPoly(doc,poly) {
for (var j=0; j < geoXmlDoc.length; j++) {
for (var i = 0; i < geoXmlDoc[doc].gpolygons.length; i++) {
if ((j == doc) && (i == poly)) {
geoXmlDoc[j].gpolygons[i].setOptions({ fillColor: "#FF0000", strokeColor: "#FF0000" });
} else {
geoXmlDoc[j].gpolygons[i].setOptions({ fillColor: "#78A04C", strokeColor: "#78A04C", fillOpacity: 0.4 });
}
}
}
}
并更改 useTheData
以将文档传递给 kmlHighlightPoly 函数。
function useTheData(doc) {
var sidebarHtml = '<table><tr><td><a href="javascript:showAll();">Show All</a></td></tr>';
for (var j = 0; j < doc.length ; j++) { // Added by me to parse all kml files to the map
geoXmlDoc = doc;
for (var i = 0; i < doc[j].gpolygons.length; i++) {
sidebarHtml += '<tr><td>' + doc[j].placemarks[i].name + ' - <a href="javascript:kmlHighlightPoly('+j+','+i+');">highlight</a><br></td></tr>';
highlightPoly(doc[j].gpolygons[i]);
}
}
sidebarHtml += "</table>";
document.getElementById("map_barralateral").innerHTML = sidebarHtml;
};
关于javascript - geoxml v3 在使用多个 KML 文件时突出显示多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036622/
您如何将城市与谷歌地球的 kml 曲线(线)联系起来? 最佳答案 首先,由于您在 SO 我假设您是从 KML 的角度询问,而不仅仅是在桌面应用程序中。 你需要有两个城市的坐标。然后,您将从 docs
我有一个在 map 上绘制并生成 kml 字符串的项目。我想通过 ajax 请求将其发送到 kml 文件。 $.ajax({ type: 'PUT', url: 'myurl.kml'
我需要深入研究 KML,所以我在网上查看规范和示例,但我得到了一些不一致的信息。 例如,有些网站说你写了 true 之类的东西。而其他人有1 ,而其他人则说不再需要 tessellate,因为 Alt
我想用谷歌地球每 10 秒加载一个 kml 文件,我找到了这个例子 http://ukhas.org.uk/code:kml_live_update但它似乎不起作用。
我有一个具有以下结构的巨大 kml 文件: 1.5 30ffa911
我想在我的 KML 中添加一个图例,无论您在 map 上的哪个位置,该图例都将始终位于同一位置。你怎么做到这一点?叠加层什么的?非常感谢 最佳答案 您可以使用屏幕覆盖添加静态图例(尽管您需要创建手动使
我试图让 gx:track 的线根据某些条件在轨道的不同部分具有不同的颜色,但我无法找到为轨道的一部分着色的方法。我正在使用 C# 生成 kml 文件。顺便说一句,我的 gx:track 有扩展数据。
我生成的 KML 文件可能有 50,000 个或更多地标,根据特定于域的分组排列在文件夹中。 KML 文件使用打包到 KMZ 文件中的自定义图像。 我希望将单个 KML 文件分解为多个文件,根据分组进
你好,我正在编写一些 KML,然后我按顺序创建了多重几何体 地标A地标 B 我不能选择 PlMark A 因为 B 更大,但是当我有 地标 B地标A 是的,因为我认为 A 较小并且它是最后一个被绘制的
我试图让 gx:track 的线路根据某些条件在轨道的不同部分具有不同的颜色,但我无法找到为轨道的部分着色的方法。我正在使用 C# 生成 kml 文件。顺便说一句,我的 gx:track 已经扩展了数
我正在构建一个为独立的 Google 地球客户端提供数据的应用程序。我想发送一组初始数据,然后使用 动态更新它和 标签随着服务器上的变化而变化。我正在使用 Java API for KML (JAK
我对 google earth 的 kml 文件有疑问。当我使用高度模式 clampToGround 时,它完全符合我的预期,它很好地跟随地面。 pm1kml
我正在从 ArcMap 图层创建 KML 文件,该图层使用 XSLT 生成带有文件夹自定义链接的 HTML 弹出窗口。其中一些链接有嵌入的空间。当我尝试在 Google 地球中打开这些链接时,它什么也
当我在 Excel 中打开 KML 文件时,同一地标的坐标与 Google Earth 中显示的坐标不同。例如,Google Earth 中显示的地标坐标点为 24.484138°、54.400700
这个问题困扰了我大约 2 天,谷歌并没有帮助我解决这个问题。基本上,下面的代码应该定义气球内的文本。不幸的是,它不是那样工作的。如果 GE 无法处理 KML 中定义的样式,我们最终会得到似乎是后备方案
Google map 是否像 Google 地球一样支持 KML 区域? 谷歌在这里给出了一个很好的区域描述/教程: https://developers.google.com/kml/documen
我创建了一个具有 15.439 轮廓的 kml 文件,每个文件都有 360 个坐标。文件大小为 369Mb。 当我尝试打开文件时,Google 地球显示一条消息: “Google 地球遇到问题需要关闭
我的 KML 地标具有这样填充的描述元素 someTag ]]> 使用 Google 地球 5,当您点击气球中的链接时,kml 将按预期下载并显示。 使用 Google 地球专业版 6,当您点击气
我正在读取 Kml 文件,更改地标的名称,然后再次保存。 var KmlFile = XDocument.Load("C:\\Inetpub\\wwwroot\\GeotagService\\Kml\
您好,我有一个多几何图形,当您将鼠标传递给线条时,样式如何像翻转一样,我的问题是多几何图形中的不同线串可能具有不同的颜色? 在下一个示例中,当您选择样式时,我有地标 Durham Tees Valle
我是一名优秀的程序员,十分优秀!