2016-04-01 11 views
0

Merhaba, kml ile ilk defa çalışıyorum. Yönlendirme gerçekleşene kadar sorunsuz çalışan her şey. Eğer sayfa doğrudan vurursa tüm iyi çalışıyor, ama eğer kullanıcı formu benim harita sayfasına giriş yapmak gibi başka bir sayfa yönlendirirseniz kml katman çalışmıyor ve yukarıda belirtilen hata verir. ama sayfayı yeniledikten sonra her şey yolunda gider. İşte bir yenilemeden sonra çalışan kml kodum.Kml katmanı yenilendikten sonra iyi çalışır, ancak typeError değerini verir: property getMap özelliğini okuyamaz. İlk yükleme tarihi

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC9CYHJG1297Ska0QoflD056gg&callback=initMap" 
    async defer></script> 
<script type="text/javascript"> 
var layers = []; 

layers[0] = new google.maps.KmlLayer("http://wrf1.domain.edu/bipush/kml/plot_5253.kml", 
    { 
    preserveViewport: true 
    }); 
layers[1] = new google.maps.KmlLayer("http://wrf1.domain.edu/bipush/kml/plot_5254.kml", 
     { 
    preserveViewport: true 
    }); 
    var map; 

function initialize() { 
    var latlng = new google.maps.LatLng(24.5584261, 73.6870176); 
    var myOptions = { 
    zoom: 11, 
    center: latlng, 
    mapTypeIds: google.maps.MapTypeId.ROADMAP, 
    zoomControl: true, 
    zoomControlOptions: { 
     position: google.maps.ControlPosition.LEFT_TOP 
    } 
    } 
    map = new google.maps.Map(document.getElementById("map"), myOptions); 
} 

function toggleLayers(i) { 

    if (layers[i].getMap() == null) { 
    layers[i].setMap(map); 
    } else { 
    layers[i].setMap(null); 
    } 
    //document.getElementById('status').innerHTML += "toggleLayers(" + i + ") [setMap(" + layers[i].getMap() + "] returns status: " + layers[i].getStatus() + "<br>"; 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

cevap

0

birlikte hem kullanmayın, uyumsuz bir geri arama ile "zaman uyumsuz Ertele'yı" kullanabilir veya onload dinleyicisi kullanmak Ya.

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC9CYHJG1297Ska0QoflD056gg></script> 

google.maps.event.addDomListener(window, 'load', initialize); 

kod parçacığı:

var layers = []; 
 

 
layers[0] = new google.maps.KmlLayer({ 
 
    url: "http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSoutheastern_kml.xml", 
 
    // preserveViewport: true 
 
}); 
 
layers[1] = new google.maps.KmlLayer({ 
 
    url: "http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSouthern_kml.xml", 
 
    // preserveViewport: true 
 
}); 
 
var map; 
 

 
function initialize() { 
 
    var latlng = new google.maps.LatLng(24.5584261, 73.6870176); 
 
    var myOptions = { 
 
    zoom: 11, 
 
    center: latlng, 
 
    mapTypeIds: google.maps.MapTypeId.ROADMAP, 
 
    zoomControl: true, 
 
    zoomControlOptions: { 
 
     position: google.maps.ControlPosition.LEFT_TOP 
 
    } 
 
    } 
 
    map = new google.maps.Map(document.getElementById("map"), myOptions); 
 
    toggleLayers(0); 
 
    toggleLayers(1); 
 
    var btns = document.getElementsByClassName("btn"); 
 
    for (var i = 0; i < btns.length; i++) { 
 
    google.maps.event.addDomListener(btns[i], 'click', (function(i) { 
 
     return function() { 
 
     toggleLayers(i); 
 
     } 
 
    })(i)); 
 
    } 
 
} 
 

 
function toggleLayers(i) { 
 

 
    if (layers[i].getMap() == null) { 
 
    layers[i].setMap(map); 
 
    } else { 
 
    layers[i].setMap(null); 
 
    } 
 
    google.maps.event.addListener(layers[i], 'status_changed', function() { 
 
    document.getElementById('status').innerHTML += "toggleLayers(" + i + ") [setMap(" + layers[i].getMap() + "] returns status: " + layers[i].getStatus() + "<br>"; 
 
    }); 
 
} 
 

 
google.maps.event.addDomListener(window, 'load', initialize);
html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100% 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<input class="btn" value="0" type="button" /> 
 
<input class="btn" value="1" type="button" /> 
 
<div id="status"></div> 
 
<div id="map"></div>

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC9CYHJG1297Ska0QoflD056gg&callback=initMap" 
async defer></script> 

google.maps.event.addDomListener(window, 'load', initialize); 

Bu (muhtemelen tanımlanan değil initMap hakkında bir javascript hata var) bir seçenektir
İlgili konular