2012-03-26 4 views
0

У меня есть карта, которая читает XML-файл; это все очень просто и скопировано отсюда: http://geochalkboard.wordpress.com/2009/03/30/reading-xml-files-with-the-google-maps-api/Google Map javascript Маркеры MarkerManager не отображаются

Моя версия здесь: http://www.cloudfund.me/maps/mashup.html и файл данных это чтение здесь: converted.xml в том же каталоге.

Я не получаю никаких баллов, когда я запускаю его. Я запустил несколько консольных журналов, чтобы увидеть, могу ли я что-нибудь увидеть, но, насколько это важно, он просто пробегает без затруднений. Файл загружается нормально, и я могу без проблем наблюдать цикл кода через все строки (208 в этом примере).

только предупреждение, которое я получаю, является «ресурсом, интерпретируемым как другой, прошедший как неопределенный»; взглянув на некоторые из других потоков, я не вижу ничего, что помогает - никаких пустых ссылок src и т. д. Насколько я могу судить, это не должно мешать этому отмечать точки.

Вот реальный кикер - пытаясь отследить эту ошибку, я установил точную копию исходного кода на моем собственном сервере и получил ошибку об нулевых полях, и я добавил некоторый условный код для сортировки; эта версия работает на моем сервере. Это austin.html в том же каталоге (к сожалению, не может сделать больше, чем две ссылки в моих первых постов!)

Итак - мой код это:

<title>Test </title> 


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=AIzaSyDgybFoyn3i5j_6d7ul7p2dPNQ5b1xOWnk" 
     type="text/javascript">console.log("Loaded Maps API");</script> 

      <script src="http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js">console.log("MarkerManager");</script> 


<script type="text/javascript"> 
console.log("Into Main Script"); 
function initialize() { 
    if (GBrowserIsCompatible()) { 
    map = new GMap2(document.getElementById("map_canvas")); 
    map.setCenter(new GLatLng(51.39906378, -2.449545605), 13); 
    map.setUIToDefault(); 
    map.addControl(new GLargeMapControl()); 
    map.addControl(new GMapTypeControl()); 
    map.addMapType(G_PHYSICAL_MAP); 
    map.setMapType(G_PHYSICAL_MAP); 
    console.log("Reached end of map initialising"); 
    addMarkersFromXML(); 
    console.log("MarkersfromXML") 
    } 
} 

function addMarkersFromXML(){ 
    var batch = []; 
    mgr = new MarkerManager(map); 

    var request = GXmlHttp.create(); 
    console.log("About to open converted.xml") 
    request.open('GET', 'converted.xml', true); 
    console.log("Opened Converted.xml") 
    request.onreadystatechange = function() { 
    if (request.readyState == 4 && request.status == 200) 
{ 
    var xmlDoc = request.responseXML; 
    var xmlrows = xmlDoc.documentElement.getElementsByTagName("row"); 

    for (var i = 0; i < xmlrows.length; i++) { 
     var xmlrow = xmlrows[i]; 
     console.log("Running through row number",i) 
     var xmlcellLongitude = xmlrow.getElementsByTagName("longitude")[0]; 
     console.log(xmlcellLongitude); 
     var xmlcellLatitude = xmlrow.getElementsByTagName("latitude")[0]; 
     var point = new GLatLng(parseFloat(xmlcellLatitude.firstChild.data),parseFloat(xmlcellLongitude.firstChild.data)); 

     //get the PAO 
     var xmlcellAssetName = xmlrow.getElementsByTagName("pao")[0]; 
     console.log(xmlcellAssetName); 
     var celltextAssetName = xmlcellAssetName.firstChild.data; 

     //get the area 
     var xmlcellArea = xmlrow.getElementsByTagName("area")[0]; 
     console.log(xmlcellArea); 
     var celltextArea = xmlcellArea.firstChild.data; 

     //get the land type 
     var xmlcellLandType = xmlrow.getElementsByTagName("landtype")[0]; 
     console.log(xmlcellLandType); 
     var celltextLandType = xmlcellLandType.firstChild.data; 

     //get the Planning Permissions 
     var xmlcellPlanning = xmlrow.getElementsByTagName("planning")[0]; 
     console.log(xmlcellPlanning); 
     var celltextPlanning = xmlcellPlanning.firstChild.data; 

     var htmlString = "Asset Name: " + celltextAssetName + "<br>" + "Size: " + celltextArea + "<br>" + "Land Type: " + celltextLandType + "<br>" + "Planning Permissions: " + celltextPlanning; 
     //var htmlString = 'yes' 
     var marker = createMarker(point,htmlString); 
     batch.push(marker); 

    } 

    mgr.addMarkers(batch,50); 
    mgr.refresh(); 

    } 
    } 
request.send(null); 

    } 

function createMarker(point,html) { 
     var marker = new GMarker(point); 
     GEvent.addListener(marker, "click", function() { 
     marker.openInfoWindowHtml(html); 
     }); 
     return marker; 
} 
    </script> 
</head> 
    <body onload="initialize()" onunload="GUnload()"> 
    <div id="map_canvas" style="width: 1100px; height: 700px"></div> 
    </body> 
</html> 

ответ

0

Думаю, вы есть опечатка. В коде, вы тянете неполный URL для API:

<script src="//maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=AIzaSyDgybFoyn3i5j_6d7ul7p2dPNQ5b1xOWnk"

Это странствующий // кажется, метание код выключения.

Хотя, если честно, исходный пример (и austin.html) не работает точно так, как можно было бы предположить. Точки получают рендеринг, но эффективная кластеризация не выполняется, когда вы уменьшаете масштаб. Подозреваем, что ветвь 2.0 API перешла на более новую версию и создала немного несовместимости.

Рекомендовать вам переписать это в API версии 3. Существует менеджер кластера, который работает для него достаточно хорошо.

http://tools.voanews2.com/nuclear_reactors/

+0

Спасибо! Я сначала посмотрю на этот URL-адрес ... Хм, на втором. Я полный новичок (следовательно, начиная с чужого кода). Так что это может занять некоторое время. – Withnail

+0

Я прояснил эту опечатку, но ничего не делаю. Ба. Является ли код g3 v3 существенно отличающимся? – Withnail

+0

URL-адрес, начинающийся с '//', не является опечаткой, а относительным URL-адресом ** ** (http://paulirish.com/2010/the-protocol-relative-url/). Это приведет к тому, что скрипт карт будет загружен с тем же протоколом (http или https) в качестве содержательной страницы. – gapple