2016-09-23 12 views
0

Ich möchte in der Lage sein, das 'custCenter' -Objekt von dieser Javascript-Datei zu einer anderen zu übergeben. Ich habe es eine globale Variable gemacht, aber ich bin nicht sicher, wie es von einem anderen JavaScript-Datei zuzugreifen:Weitergabe von Javascript-Variablen von einer Datei in eine andere

var map = null; 
var markers = []; 
var custCenter = {}; 

function initMap() 
{ 
    var startingCenter = { lat: 49.22, lng: -122.66 }; 
    custCenter = { lat: 49.22, lng: -122.66 }; 

    map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 12, 
     center: custCenter, 
     mapTypeId: 'terrain' 
    }); 

    // This event listener will call addMarker() when the map is clicked. 
    map.addListener('click', function (event) { 
     var myLatLng = event.latLng; 

     deleteMarkers(); 
     addMarker(myLatLng); 

     window.lat = myLatLng.lat(); 
     window.lng = myLatLng.lng(); 
     alert(window.lat + ', ' + window.lng); 
    }); 

    // Adds a marker at the center of the map. 
    addMarker(custCenter); 
} 

// Adds a marker to the map and push to the array. 
function addMarker(location) 
{ 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: map     
    });    

    markers.push(marker); 
} 

// Sets the map on all markers in the array. 
function setMapOnAll(map) { 
    for (var i = 0; i < markers.length; i++) { 
     markers[i].setMap(map); 
    } 
} 

// Deletes all markers in the array by removing references to them. 
function deleteMarkers() { 
    clearMarkers(); 
    markers = []; 
} 

Dies ist für eine App, die ich mache, Menschen zu helfen, ihre verlorene Haustiere finden. Das custCenter-Objekt ist das lat und lng, auf das der Benutzer auf Google Maps klickt, das ich mit Google Maps an eine andere JS-Datei weiterleiten möchte, die mit einem HTML-Code verknüpft ist. Hier ist die App, wenn Sie sehen möchten: http://alainwebdesign.ca/pl2/tom/getlocation.html

+0

Fügen Sie beide JavaScript-Dateien in das HTML-Dokument ein? Ich kann die getLoc.js nur im HTML-Dokument sehen. Diese sind im globalen Gültigkeitsbereich und Sie sollten in der Lage sein, auf das Objekt von jedem Skript aus zuzugreifen. –

+0

Laden Sie eine neue Seite? – valarauko

+0

@valarauko Ja Ich werde diese Seite laden: http://alainwebdesign.ca/pl2/, und möchte, dass das Zentrum auf dieser Seite die Koordinaten sind, die vom Benutzer auf der Seite in meinem ursprünglichen Post ausgewählt wurden. –

Antwort

0

Stellen Sie sicher, dass Ihr zweites Skript-Tag nach diesem enthalten ist, so dass die custCenter Variable, auf die es ankommt, zugänglich sein wird.

0

Das Problem ist, dass Sie die Seite ändern, die alle Variablen löschen würde, die von der vorherigen Seite festgelegt wurden (es hat keinen Speicher zwischen Seiten). Um die Werte auf die andere Seite übergeben, würden Sie Verwendung von lokalen oder Sitzungsspeicher oder Cookies vornehmen müssen, setzen Sie den Wert auf der ersten Seite

sessionStorage.setItem("custCenter", JSON.stringify(custCenter)) 

Und dann laden am Anfang der zweiten Seite

custCenter = JSON.parse(sessionStorage.getItem("custCenter")) 
+0

Nun gerade ich habe es um eine neue Seite zu laden. Aber ich benutze AngularJS, also würde es einen Weg geben, wie ich es tun könnte, ohne eine neue Seite zu laden, vielleicht mit ngRoute? Und speichern Sie die Variable mit dem $ http-Service? –

+0

Ich bin nicht sehr vertraut mit eckigen, aber nach den Dokumenten, die Sie sagten, ngroute und $ http wäre gut, könnten Sie die Parameter an die Route übergeben, ich denke, es wäre mehr geeignet – valarauko

+0

Mit dem Dienst $ routeParams? Das wäre perfekt, aber aus dem Buch, das ich lese, sieht es so aus, als müssten diese Parameter als Wert in der URL angegeben werden, ich sehe nicht, wie man eine dynamische Variable übergeben kann, die vom Benutzer ausgewählt wurde. –

Verwandte Themen