2014-02-06 3 views
-3

Я потратил столько времени, чтобы исправить эту ошибку. Я действительно не знаю, в чем проблема.Uncaught TypeError: Не удается вызвать метод getElementsByTagName из null

http://pastebin.com/wXEHsqeY где код. Ошибка указывает на библиотеку листовок kml.js, но я не коснулся этого файла. Ошибка, похоже, исходит из строк 366-390, так как когда я удаляю их, ошибок нет.

Я бы очень признателен за любую помощь, которую может предложить любой.

Благодаря

Update: извинения за использование неправильного формата, пожалуйста, см более простой пример того, что Im застрял на.

<body> 
    <div style="width:100%; height:100%" id="map"></div> 

<?php 
function getKmlFiles() { 

    $folder = 'kml/'; 
    $filetype = '*.*'; 
    $files = glob($folder.$filetype); 

    for ($i=0; $i<count($files); $i++) { 

     echo '"' . $files[$i].'",'; 
    } 

} 
?> 

<script> 

var kmlArray = [<?php getKmlFiles(); ?>]; 

console.log(kmlArray); 

var map = new L.Map('map', {center: new L.LatLng(58.4, 43.0), zoom: 11}); 
var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'); 
var track = new L.KML("http://localhost/kmllayer/kml.kml", {async: true}); 
track.on("loaded", function(e) { map.fitBounds(e.target.getBounds()); }); 

map.addLayer(track); 
map.addLayer(osm); 

    var object ={'THW-UK2 (R)':track}; 
for (var i=0; i<kmlArray.length; i++) { 

    var kmlLayer = new L.KML("http://localhost/kmllayer/" + kmlArray[i] , {async: true}); 
    object[kmlArray[i]] = kmlLayer; 
    map.addLayer(kmlLayer); 

kmlLayer.on("loaded", function(e) { 
      map.fitBounds(e.target.getBounds()); 
     }); 

     map.addLayer(kmlLayer); 

} 
console.log(object); 

map.addControl(new L.Control.Layers({}, object, {})); 


</script> 




<script type='text/javascript'> 

map.on("zoomend", function(e) { 
    console.log("zoom level is " + map.getZoom()) 
}); 

map.on("zoomend", function(e) { 
    zoom = map.getZoom(); 
    if (zoom <= 3) { 
     alert('zoomed out'); 
    } 
}); 

</script> 
+0

-1 очень сложно помочь вам при отправке ссылки на 500 строк кода. Самый простой способ - создать пример на jsfiddle.net. –

+0

Пожалуйста, найдите время, чтобы уменьшить свой пример до минимальной *, но полностью функционирующей демонстрации проблемы, и разместите ее здесь, а не просто на другом сайте, таком как pastebin или jsfiddle , –

+0

мои извинения за неправильный формат, но я очень новичок в этом и очень смущен. Поэтому, пожалуйста, проявляйте терпение со мной. Я включил более базовую версию – vis

ответ

0

Для тех, кто столкнулся с подобной проблемой, причина была в KML файлы были сохранены как .kmz файлы, но не на самом деле были заархивированы. Проблема решена сейчас.

0

вы открываете PHP в вашем js file на линии 366

var kmlArray = [<?php getKmlFiles(); ?>]; 

, если вы хотите использовать значения PHP в JS-файла сделать переменную global и вызвать его в файле js.

<script> 
abc = "<?php getKmlFiles(); ?>"; 
</script> 

в ваших JS-файлов

var kmlArray = abc; 
+0

Hi Moeed, Большое спасибо за ваше время. Весь файл является файлом .php, но ссылается на файлы .js, поэтому ваш ответ по-прежнему применяется? Я все равно попробую, спасибо. – vis

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