我花了很多时间来修复这个bug。我真的不知道问题是什么。
http://pastebin.com/wXEHsqeY是代码所在的位置。错误指向传单库kml.js但我没有触及此文件。错误似乎来自第366-390行,因为当我删除它时没有错误。
我真的很感激任何人都可以提供帮助。
由于
更新:对使用错误格式表示歉意,请参阅我坚持的更基本的示例。
<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 :(得分:0)
您正在js file
的第366
行开启 php
var kmlArray = [<?php getKmlFiles(); ?>];
如果你想在js文件中使用php的值,请创建一个变量global
并在你的js
文件中调用它。
<script>
abc = "<?php getKmlFiles(); ?>";
</script>
在你的js文件中
var kmlArray = abc;
答案 1 :(得分:0)
对于遇到类似问题的任何人,原因是kml文件被保存为.kmz文件但实际上并未压缩。问题现在解决了。