如何在谷歌地图API v3上自定义一个地面覆盖图标动画
How do I custom animate a groundoverlay Icon on google map API v3
我试图通过不断刷新地面覆盖图标来为其设置动画。所以基本上这就是我想要实现的想法。1.我有一个.png文件,它是我在PIL(python图像库)中使用掩码创建的2.我每隔10秒就用python脚本不断更新.png文件,以更改一些功能(这是一个模拟仪表,所以我基本上每10秒移动一次指示器3.我有一个KML文件,我用它将.png文件覆盖到谷歌地图中。4.我希望在KML中使用刷新模式,每隔10秒或每当.png文件更改时更改.png文件。我知道我不能对图标使用刷新模式onInterval,但我在刷新onChange或onExpire方面没有取得任何成功。。。我不知道我做错了什么,这个项目对我来说有点紧急。我已经附上了我的.kml文件
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Meter Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting
on July 13th, 2001.</description>
<Icon>
<href>http://dl.dropbox.com/u/20943178/meter_one.png?version=1.x</href>
<refreshMode>onChange</refreshMode>
<refreshInterval>10</refreshInterval>
<viewBoundScale>0.45</viewBoundScale>
</Icon>
<LatLonBox>
<north>41.044967</north>
<south>38.869125</south>
<east>-121.699475</east>
<west>-124.375317</west>
<rotation>0</rotation>
</LatLonBox>
</GroundOverlay>
</Folder>
</kml>
图标显示在谷歌地图上,但它并没有像我希望的那样每10秒改变一次。我必须刷新整个页面才能让它改变,这有点违背我工作的目的。。。我的html脚本是用javascript编写的,我也是新手…我正在用以下行制作kml覆盖
var myParser = new google.maps.KmlLayer('http://dl.dropbox.com/u/20943178/meter.kml');
myParser.setMap(map);
更新:
在我尝试使用AJAX来解决我的问题时,我已经阅读了很多HTML、Javascript和AJAX。。。我在网上看到了这个例子,我试着稍微修改一下,看看它是如何工作的。然而,没有明显的原因,地图甚至不会加载。。。。有人能帮助我理解为什么这个代码不会加载吗?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Refresh" CONTENT="1000">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<style>
#map_canvas { width: 1000px; height: 800px; }
</style>
<script type="text/javascript" src="http://www.google.com/jsapi?key=AIzaSyCoXqj2n1HGv58B4aImyVa7cbKYuNc4vag&sensor=false"></script>
<script type="text/javascript">
//google.load("maps", "2.x");
var map;
function initialize() {
map = new google.maps.Map(document.getElementById('map_canvas'));
map.setCenter(new google.maps.LatLng(36, -120),5);
mapTypeId: google.maps.MapTypeId.ROADMAP
downloadUrl('GET', 'http://dl.dropbox.com/u/20943178/test.xml', function(data) {
var xmlDoc = data.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++){
var point = new google.maps.LatLng(parseFloat(markers.[i].getAttribute("lat")),
parseFloat(markers.[i].getAttribute("lng")));
var marker = new google.maps.Marker( {
map:map,
position: point
});
}
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXobject ?
new ActiveXObject('Microsoft.XMLHTTP'):
new XMLHttpRequest;
request.onreadystatechange = function(){
if (request.readychange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
function doNothing() {}
</script>
</head>
<body onload="initialize()" <!--onunload="GUnload()"-->>
<div id="map_canvas"></div>
</script>
</body>
</html>
我强烈建议不要将KML用于此目的。KML是在谷歌服务器上渲染的,这意味着每次你想让它移动时,你都会重新下载该图像。
相反,使用AJAX获取新坐标,然后在Maps API V3中使用GroundOverlay
来显示图标。
每当你想移动它时,你都需要创建一个新的覆盖,但图标只会下载一次。
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 将一个iframe覆盖在另一个ifame上
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 无限多维数组,其中一个值被覆盖
- 加载CSS文件并覆盖上一个文件
- 多个背景图像,一个覆盖另一个
- 如何在谷歌地图中制作一个覆盖世界的多边形
- JavaScript设计模式,一个函数正在被覆盖
- 预加载器."$.加载覆盖不是一个函数”
- 我的数组中的每个元素都被最后一个元素推入覆盖
- 用另一个 ng 点击覆盖点击(例如 ng 点击)
- 导入 serval WebComponent 时,上一个自定义元素被下一个元素覆盖
- Javascript 保存相同的 ID,而不会在 LocalStorage 中覆盖另一个 ID
- Javascript 循环和数组通过给定的最后一个值覆盖元素
- 悬停时仅显示一个覆盖
- 关闭一个覆盖Div点击
- 在Phaser框架中给予精灵一个覆盖
- 显示一个覆盖iframe的内容从动态url
- 传单:地图点击事件不工作时,点击一个覆盖的geojson层