2010-07-01 3 views
1

В настоящее время я работаю над приложением, которое вытаскивает местоположения Карты Google из файла XML и загружает их на карту. В настоящее время функция Load() прикрепляется к тегу body. IOW, body onLoad = "load()" onunload = "GUnload()".Начало загрузки Карт Google()

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

При этом я не уверен, как инициировать функцию load(), за исключением тега body. Это, конечно, проблема, если я просто включаю файл на другой странице, потому что второй тег body приведет к аннулированию моего HTML.

Вот функция нагрузки:

function load() { 
    if (isCompatible) { 
     // Create Map 
     map = new GMap2(document.getElementById("map")); 
     map.setCenter(new GLatLng(40, -90), 3); 

     // Add controls 
     map.addControl(new GLargeMapControl()); 
     map.addControl(new GMapTypeControl()); 

     resetPolygon(); 

     GDownloadUrl("<?php echo $XML; ?>", function(data) { 
var xml = GXml.parse(data); 
var markers_xml = xml.documentElement.getElementsByTagName("marker"); 
var bounds = new GLatLngBounds(); 
for (var i = 0; i < markers_xml.length; i++) { 
    var listid = markers_xml[i].getAttribute("lid"); 
    var voterid = markers_xml[i].getAttribute("voterid"); 
    var contacted = markers_xml[i].getAttribute("contacted"); 
var name = markers_xml[i].getAttribute("name"); 
var address = markers_xml[i].getAttribute("address"); 
var type = markers_xml[i].getAttribute("type"); 
var iconcolor = markers_xml[i].getAttribute("iconcolor"); 
var point = new GLatLng(parseFloat(markers_xml[i].getAttribute("lat")), 
     parseFloat(markers_xml[i].getAttribute("lng"))); 
if(contacted == '2'){ 
var thecolor = "#CCCCCC" 
}else{ 
var thecolor = iconcolor 
} 

var marker = createMarker(point, voterid, name, address, type, thecolor, listid); 
map.addOverlay(marker); 
bounds.extend(point); 
markers.push(marker); 
markers[i].voterid = voterid; 
markers[i].contacted = contacted; 
} 
map.setZoom(map.getBoundsZoomLevel(bounds)); 
map.setCenter(bounds.getCenter()); 

}); updatePoints();

} 
} 

Если вам нужна дополнительная информация, то дайте мне знать. Любая помощь приветствуется.

ответ

0

Я понял. Запустите window.onload = загрузите Javascript после загрузки элемента.

Итак:

<div id="map" style="width: 98%; height: 525px; float:left; margin: 0 1% 0 1%"></div> 
<script type="text/javascript"> 

window.onload=load; 

function load() { 
    if (isCompatible) { 
     // Create Map 
     map = new GMap2(document.getElementById("map")); 
     map.setCenter(new GLatLng(40, -90), 3); 

     // Add controls 
     map.addControl(new GLargeMapControl()); 
     map.addControl(new GMapTypeControl()); 

     resetPolygon(); 

     GDownloadUrl("<?php echo $XML; ?>", function(data) { 
      var xml = GXml.parse(data); 
      var markers_xml = xml.documentElement.getElementsByTagName("marker"); 
      var bounds = new GLatLngBounds(); 
      for (var i = 0; i < markers_xml.length; i++) { 
      var listid = markers_xml[i].getAttribute("lid"); 
      var voterid = markers_xml[i].getAttribute("voterid"); 
      var contacted = markers_xml[i].getAttribute("contacted"); 
      var name = markers_xml[i].getAttribute("name"); 
      var address = markers_xml[i].getAttribute("address"); 
      var type = markers_xml[i].getAttribute("type"); 
      var iconcolor = markers_xml[i].getAttribute("iconcolor"); 
      var point = new GLatLng(parseFloat(markers_xml[i].getAttribute("lat")), 
            parseFloat(markers_xml[i].getAttribute("lng"))); 
      if(contacted == '2'){ 
       var thecolor = "#CCCCCC" 
      }else{ 
       var thecolor = iconcolor 
      } 

      var marker = createMarker(point, voterid, name, address, type, thecolor, listid); 
      map.addOverlay(marker); 
      bounds.extend(point); 
      markers.push(marker); 
      markers[i].voterid = voterid; 
      markers[i].contacted = contacted; 
      } 
      map.setZoom(map.getBoundsZoomLevel(bounds)); 
      map.setCenter(bounds.getCenter()); 
     }); 
     updatePoints(); 

    } 
} 

Это был ответ на этот вопрос. Спасибо всем, кто посмотрел.

0

не может сопротивляться комментировать, что у вас есть базовые искаженные-HTML-проблемы, если вы в то число сайта с тэгом тела внутри страницы с другим тегом тела ... просто говорите :)

+0

Очевидно. Вот почему я опубликовал вопрос. Этот комментарий не помог. – jmorhardt

+0

yea sry, должен признать, что я неправильно прочитал ваше сообщение. – Nicolas78

Смежные вопросы