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

[FRAGE] JS GoogleAPI und das JS-Array-Problem

sascha83

New member
Hallo,

ich stehe mit dem unten aufgeführten Code vor folgendem Problem:

Der in der googleApi ansässige Code erwartet im Request types in Form eines Arrays. Dies übergebe ich mit meiner Funktion getPOI(). Die Funktion dient dazu die POIs dynamisch bestimmen zu können. Trage ich die POIs 'per Hand' ein (siehe Kommentar im Code) läuft alles wunderbar, soblad ich mich auf meine Funktion verlasse, in ich verlassen.

Ich nehme an, dass es einfach an dem 'Array/Object' liegt.
Versuche mit arr.map(callback[, thisArg]); waren leider erflos.

Code:
function initialize(currentLat, currentLon) {
    var dynPosition = new google.maps.LatLng(currentLat, currentLon);
    var pois = getPOI();
    
    map = new google.maps.Map( {
	center: dynPosition,
  });
var request = {
	location: dynPosition,
	radius: 2000,
	types: pois             
          
/*    ['airport', 'cafe', 'university', 'zoo'] */
              
};
var service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

function callback(places) {
     /* ... */
        }
    }
}
    
function getPOI() {
    var poi = new Array();
    var count = 0;
    for(var i = 0; i < localStorage.length; i++){
        var sKey = localStorage.key(i);
        var sValue = localStorage.getItem(sKey);
        if(sValue == 'checked') {
            poi[count] = sKey;
            count++;
        }
    }
    return poi;
}

Für Hinweise auf Fehler wäre ich euch sehr dankbar.
 
Zuletzt bearbeitet:
Du könntest es mal so probieren:
Code:
function getPOI() {
    var poi = [];
    for (var i = 0; i < localStorage.length; i += 1){
        var sKey = localStorage.key(i);
        var sValue = localStorage.getItem(sKey);
        if (sValue === 'checked') {
            poi.push(sKey);
        }
    }
    return poi;
}

Wenn das nichts bringt, muss du etwas genauer werden: Was heißt genau "bin ich verlassen"? Steht etwas in der Fehlerkonsole? Wie sehen die Requests manuell und mit deiner Funktion aus (also auf der HTTP-Ebene)?
 
.push(sKey) brachte leider keinen Erfolg.

Nutze ich meine Funktion erkennt, so erkennt types mein, in der Funktion generiertes Array nicht.

Ohne Funktion:
Code:
var poi = ['park'];
alert(poi);
POI Park wird mir angezeigt.

Mit Funktion:
Code:
var poi = getPOI();
alert(poi);
keine Ausgabe.

Die Fehlerkonsole zeigt mir keine Auffälligkeiten an.
 
Ich vermute, du bekommst ein leeres Array aus getPOI() zurück. alert eignet sich nicht besonders gut zum debuggen.
Nimm console.log(poi) oder für diesen Fall besser console.dir(poi);
 
Wahrscheinlich ist im localStorage nicht das drin, das du denkst.
Was bekommst du denn, wenn du in der KOnsole
Code:
for (var i = 0; i < localStorage.length; i += 1){
        var sKey = localStorage.key(i);
        var sValue = localStorage.getItem(sKey);
        console.log(sKey, sValue);
 }
ausführst?
 
Die Konsole liefert mir genau die Werte die ich erwarte. Es werden ja auch alle gecheckten Werte in mein Array gepusht. Ich frage mich nur, ob ich einfach meinen Returnwert in 'types' reinschreiben kann, oder ob ich den Returnwert dann noch umschreiben/konvertieren muss?!
 
Zurück
Oben