2016-05-02 1 views
0

So habe ich eine KMZ-Ebene, die auf meiner Website angezeigt wird, aber nirgendwo anders angezeigt wird. Dies ist mein Javascript:KMZ-Layer wird bei Verwendung auf einer anderen Site nicht angezeigt

function getBaseUrl() { 
    var e = RegExp(/^.*\//); 
    return e.exec(window.location.href); 
} 

function initialize() { 
    function e() { 
     navigator.geolocation.getCurrentPosition(function(e) { 
      var o = new google.maps.LatLng(e.coords.latitude, e.coords.longitude); 
      p ? p.setPosition(o) : p = new google.maps.Marker({ 
       position: o, 
       icon: "http://i.imgur.com/1VTzeOS.png", 
       map: map 
      }), map.setCenter(t); 
     }), setTimeout(e, 3e5); 
    } 
    var o = new google.maps.LatLng(42.449686, -71.230919), t = o, a = { 
     zoom: 12, 
     center: o, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), a), geoXml = new geoXML3.parser({ 
     map: map, 
     singleInfoWindow: !0, 
     zoom: !1 
    }), geoXml.parseKmlString(kmlData); 
    for (var n = { 
     path: "M 0,-1 0,1", 
     strokeOpacity: 1, 
     scale: 2.5, 
     preserveViewport: !0 
    }, i = 0; i < geoXml.docs[0].gpolylines.length; i++) geoXml.docs[0].gpolylines[i].setOptions({ 
     strokeOpacity: 1, 
     strokeWeight: 1, 
     zoom: !1, 
     icons: [ { 
      icon: n, 
      offset: "0", 
      repeat: "1px" 
     } ] 
    }); 
    var r = new google.maps.KmlLayer({ 
     url: parent + "parking2.kmz", 
     strokeWeight: 20, 
     strokeOpacity: 0, 
     preserveViewport: !0 
    }); 
    r.setMap(map); 
    var p = (new google.maps.InfoWindow({ 
     content: "You are here!" 
    }), null); 
    e(); 
} 

var parent = getBaseUrl(); 

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

Die parking2.kmz Schicht wird nicht Beispiel 127.0.0.1/localhost mit xampp oder bei http://example.com/test/map.html Anzeigen auf für. Es wird jedoch auf http://example.com/map.html angezeigt. Irgendwelche Ideen?

+0

Bitte geben Sie eine [Minimal, Complete, geprüft und Lesbare Beispiel] (http://stackoverflow.com/help/mcve), der das Problem demonstriert. – geocodezip

+0

Verwenden Sie wirklich das veraltete und deaktivierte [Google Maps Javascript API v2] (http://stackoverflow.com/tags/google-maps-api-2/info) – geocodezip

Antwort

0

Geoxml3 verwendet das Objekt xmlHttpRequest, um die KML/KMZ abzurufen. Dies unterliegt der gleichen Ursprungsrichtlinie. Sie können nur auf KML/KMZ von derselben Domäne aus zugreifen. Relative URLs sollten funktionieren oder Sie können einen Proxy verwenden, um auf Daten in anderen Domänen zuzugreifen.

google.maps.KmlLayer kann nur Anzeige öffentlich zugänglichen KML/KMZ (KML/KMZ, dass die Google-Server zugreifen können), so wird nicht mit localhost (127.0.0.1/localhost) arbeiten.

von the documentation:

KML und GeoRSS Ebenen : Übersicht

Die Google Maps JavaScript API unterstützt die KML und GeoRSS Datenformate für geografische Informationen anzeigen. Diese Datenformate werden auf einer Karte mit einem KmlLayer-Objekt angezeigt, dessen Konstruktor die URL einer öffentlich zugänglichen KML- oder GeoRSS-Datei verwendet.

Verwandte: - Is XML subject to the Same Domain Policy in JavaScript when using XMLHttpRequest

+0

Danke dafür, anscheinend ist dieser Fall nur auf dem passiert Website, die ich getestet habe. –

Verwandte Themen