Как настроить анимацию значка наземного наложения на API Google Map v3 - PullRequest
0 голосов
/ 08 февраля 2012

Я пытаюсь анимировать иконку наземного наложения, постоянно обновляя ее ... так что в основном это идея, которую я пытаюсь реализовать.1. У меня есть файл .png, который я создал, используя маскирование в PIL (Python Image Library). 2. Я постоянно обновляю файл .png моим скриптом python после каждых 10 сек, чтобы изменить некоторые функции (это аналоговый счетчик, поэтому я в основном двигаюсьиндикатор каждые 10 секунд 3. У меня есть файл KML, который я использую для наложения файла .png на карты Google 4. Я надеялся использовать режим обновления в KML для изменения файла .png через каждые, скажем, 10 секунд или всякий раз, когдаФайл .png изменен. Я знаю, что не могу использовать refreshmode onInterval для значков, но у меня не было никакого успеха с refresh 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>

Значок отображается на карте Google, но он не меняется каждые 10 секунд, как я хочу это .. я должен обновить всю страницучтобы заставить его измениться, что побеждает цель моей работы ... мой html-скрипт написан на javascript, и я тоже новичок в этом ...h следующие строки

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>

1 Ответ

0 голосов
/ 09 февраля 2012

Я бы настоятельно рекомендовал не использовать KML для этой цели.KML отображается на серверах Google, что означает, что вы будете перезагружать это изображение каждый раз, когда хотите переместить его.

Вместо этого используйте AJAX для получения новых координат, а затем используйте * 1004.* в API Карт V3 для отображения значка.

Вам потребуется создавать новый оверлей всякий раз, когда вы хотите переместить его, однако значок будет загружен только один раз.

...