• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Probleme bei der Ausführung setInterval() bei Verwendung von googleMapsObjekt

sascha83

New member
Hallo,

ich möchte in meinem Programm folgenden Code intervallgesteuert alle 2 Sek. ausführen. Das funktioniert auch, so lange ich nicht folgendes googleMapsObjekt einbinde (welches ich aber benötige):

Code:
map = new google.maps.Map({
       center: pos
});

Der Code wird dann nicht wiederholt ausgeführt, sondern lediglich nur einmal.

Code:
function initialize() {
    var pos = new google.maps.LatLng(pos[0], pos[1]);
    var location = 'cafe';

    map = new google.maps.Map({
            center: pos
        });

    var request = {
        location: pos,
        radius: 2000,
        types: location
      };

    function callback(places) {
        for(var i = 0; i < places.length; i++) {

        }
    }
    service = new google.maps.places.PlacesService(map);
    service.nearbySearch(request, callback);
}

setInterval(function refresh() {
    initialize();
}, 2000);

https://developers.google.com/maps/documentation/javascript/places?hl=de

Vielen Dank für die Hilfe im Voraus.
 
Zuletzt bearbeitet von einem Moderator:
Nachricht von sascha83:
Hallo,

bitte löscht doch meinen Beitrag. Es nicht an der Programmierung sonder an
meinem Browser. Nachdem ich die Chronik gelöscht hatte lief alles.

VG

Wir löschen hier normalerweise nichts. Ist ja nicht schlimm, wenn die Frage umsonst war.
 
Tja, die Frage war auch nicht umsonst. Hatte an der falschen Stelle getestet. Das Problem besteht also nach wie vor :(
 
Steht etwas in der Fehlerkonsole?
Musst du wirklich jedes mal ein neues Map-Objekt erstellen? Kannst du nicht ein einziges erstellen und dann dieses einfach neu zentrieren?

PS:
Code:
var pos = new google.maps.LatLng(pos[0], pos[1]);
Diese Zeile ist definitiv falsch und sollte eine "pos is undefined" erzeugen.
PPS:
Code:
window.setInterval(initialize, 2000);
wäre übersichtlicher.
 
Die Vermutung mit der Objekterzeugung hatte ich auch schon angestellt. Mir ist allerdings nicht bewusst wie ich das objekt außerhalb oder global erzeuge und dann die map in der Funktion wieder zentriere!?
Folgendes wäre mein Ansatz gewesen, der funktioniert aber leider nicht:

Code:
var map = new google.maps.Map();
function initialize() {
    map = {
            center: pos
        };
}

Die Fehlerkonsole gibt mir folgendes aus:
- TypeError: Argument 1 of Window.getComputedStyle does not implement interface Element.
- ReferenceError: google is not defined

Die Einbindung der google Api sieht wie folgt aus:
Code:
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=true"></script>
 
Zuletzt bearbeitet:
Ich würde es nicht global erzeugen, sondern einfach nicht die komplette initialize() wiederholt ausführen lassen, sondern nur einen kleinen Teilbereich (z.B. über eine anonyme Funktion).

Die Fehlerkonsole gibt mir folgendes aus:
Dann hast irgendwo anders Probleme. Kannst du uns einen Testlink geben?
 
Mit nem Testlink ist leider schwer, da ich hier keinen Serverzugriff habe.

Ich habe nochmal nen anderes Debugging-Tool genutzt. Das schlug bei folgender Zeile an
Code:
var pos = new google.maps.LatLng(positionField[0], positionField[1]);

In dem Array werden mir einfach der Längen und Breitengrad aus der geolocation.watchPosition()-Funktion übergeben. Übergeben werden die koordinaten als String. Ich habe sie auch schon als Float geparsed. Leider auch ohne Erfolg
 
Dann stimmt die Reihenfolge nicht. Die Einbindung der Google API muss vor dem ersten JS Kommando stehen, das darauf zugreifen will.
Also <script src="https://maps.googleapis.com/maps/api/js?v=3"></script> weiter nach oben.
 
Super, das wars ;)

Allerdings tritt jetzt folgendes auf:

TypeError: Argument 1 of Window.getComputedStyle does not implement interface Element.

Und mein Code wird immernoch nur einmal ausgeführt.
Code:
window.setInterval(initialize, 2000);
schlägt sozusagen gar nicht an.
 
Für welche Zeile wird der Fehler angezeigt?
Und das Fehlen der Wiederholung ist eine Folge des Fehlers, JS läuft ab dem ersten Fehler nicht weiter.
 
Der Fehler wird für Zeile 35 der main.js angezeigt. Dieses File gibt es bei mir allerdings gar nicht.
Wenn ich das richtig sehe, dann gehört das zu der google Api?!


Code:
var pos = new google.maps.LatLng(pos[0], [pos[1]);

function initialize() {
    "use strict";
    map = new google.maps.Map({
		center: pos
	  });
		  var request = {
		location: pos,
		radius: 2000,
		types: ['bakery']
	  };

	  var plService = new google.maps.places.PlacesService(map);
	  plService.nearbySearch(request, callback);

Der Interval-Aufruf scheint aber zu funktionieren, in der Fehler-Konsole werden jedenfalls die Wiederholungen vor der Zeilenangabe, in meinem eingstellten Interval nach oben gezählt. Nur die Callback-Funktion wird nur einmal ausgeführt. Siehe: Anhang anzeigen 4568
 
Zuletzt bearbeitet:
Das Problem ist gelöst:
Code:
map = new google.maps.Map({
		center: pos
	  });

fehlte ein weiterer Parameter:
Code:
map = new google.maps.Map(document.getElementById('div'), {
		center: pos
	  });
 
Zurück
Oben