2012-02-08 77 views
0

我试图通过不断刷新它动画地面覆盖图标..所以基本上这是我想实现的想法。 1.我有一个.png文件,我使用PIL(python图像库)掩膜创建了 2.我每隔10secs后不断用我的python脚本更新.png文件以更改某些功能(这是一个模拟仪表,所以我基本上每10secs移动指标 3.我有一个KML文件,用于将.png文件覆盖到谷歌地图中 4.我希望在每次说出10之后使用KML中的刷新模式更改.png文件我知道我不能使用refreshmode onInterval图标,但我没有任何成功刷新onChange或onExpire ... 我不知道我做错了什么,并且这个项目对我来说是一种紧急..我已附加我的.kml文件我如何定制动画地图叠加图标谷歌地图API v3

<?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> 

Icon显示在谷歌地图上,但它并没有像我想要的那样每隔10秒就改变一次..我必须刷新整个页面才能让它改变,哪种打败了我工作的目的......我的HTML脚本是在JavaScript我为此新......我正在KML覆盖下列行

var myParser = new google.maps.KmlLayer('http://dl.dropbox.com/u/20943178/meter.kml'); 
myParser.setMap(map); 

UPDATE:

在我尝试使用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> 

回答

0

我强烈建议不要为此使用KML。 KML在Google服务器上呈现,这意味着您每次要移动时都会重新下载该图片。

取而代之,使用AJAX获取新坐标,然后在Maps API V3中使用GroundOverlay来显示图标。

无论何时想要移动它,您都需要创建一个新的叠加层,但该图标只能被下载一次。