我使用Google's My Maps创建了自己的地图。我做了一个新图层,并在上面放了一些标记 是否可以与这些标记进行交互?
我想做什么"迭代"按时间顺序排列这些标记 请考虑以下地图:Remote Islands of the World 我会按一下按钮" Next"在我的网站上。每当用户点击按钮时,地图就会从" Bouvet Island"到了" St Helena",再次点击它跳到" Izu Islands - Miyakejima"等
我甚至不知道它是否可能或在何处找到有关如何实现它的更多信息。
答案 0 :(得分:0)
一种选择是创建Google Maps Javascript API v3地图,并通过代理使用第三方KML解析器(如geoxml3)从MyMaps访问KML数据。
example(使用geoxml3在侧边栏中显示KML点名称,但可以修改它以添加按顺序排列的“下一个”按钮)。
example with "next"/"previous" links in infowindow and next button above the map
在useTheData
函数中添加了此代码(以及多边形和折线的等价物):
if (placemark.marker) {
google.maps.event.addListener(placemark.marker, 'click', function(i) {
return function(evt) {
// add next and previous links to infowindow when the placemark is clicked
infowindow.setContent(infowindow.getContent()+"<br><a href='javascript:next("+i+");'>next</a> - <a href='javascript:prev("+i+");'>previous</a>");
// track the last opened placemark
openInfoWindow = i;
}}(i));
然后这些函数打开下一个infowindow:
function next(i) {
var next = (i+1) % geoXmlDoc.placemarks.length;
if (geoXmlDoc.placemarks[next].marker) {
google.maps.event.trigger(geoXmlDoc.placemarks[next].marker, "click");
} else if (geoXmlDoc.placemarks[next].polyline) {
google.maps.event.trigger(geoXmlDoc.placemarks[next].polyline, "click");
} else if (geoXmlDoc.placemarks[next].polygon) {
google.maps.event.trigger(geoXmlDoc.placemarks[next].polygon, "click");
}
}
function nextBtn() {
// handle case where button is clicked before any placemarks on the map
if (!openInfoWindow) openInfoWindow = 0;
next(openInfoWindow);
}
请注意,由于geoxml3使用XmlHttpRequest来访问数据,因此必须在显示页面的域上使用代理,以克服对XmlHttpRequest的相同域限制。