Запуск Google Maps () - PullRequest
       7

Запуск Google Maps ()

1 голос
/ 01 июля 2010

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

Я работаю в среде 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 ();

    }
}

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

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

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

0 голосов
/ 01 июля 2010

Я понял это. Запустите window.onload = load с 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();

    }
}

Это был ответ на вопрос. Спасибо всем, кто заглянул.

...