API di Google Maps - Problemi con la classe GLatLngBounds
-
08-06-2019 - |
Domanda
Ho qualche problema con il API di Google Maps.Ho un array che contiene un oggetto che ho creato per memorizzare punti.
Il mio array e classe:
var tPoints = [];
function tPoint(name) {
var id = name;
var points = [];
var pointsCount = 0;
...
this.getHeadPoint = function() { return points[pointsCount-1]; }
}
tPoint contiene un array di GLatLng punti.Voglio scrivere una funzione per restituire a GLatLngBounds oggetto che viene esteso dai limiti della mappa corrente per mostrare tutti gli HeadPoint.
Ecco cosa ho finora..
function getBounds() {
var mBound = map.getBounds();
for (var i = 0; i < tPoints.length; i++) {
alert(mBound.getSouthWest().lat() + "," + mBound.getSouthWest().lng());
alert(mBound.getNorthEast().lat() + "," + mBound.getNorthEast().lng());
currPoint = trackMarkers[i].getHeadPoint();
if (!mBound.containsLatLng(currPoint)) {
mBound.extend(currPoint);
}
}
return mBound;
}
Che restituisce questi valori per l'avviso.(Generalmente negli Stati Uniti)
"19.64258,NaN"
"52.69636,NaN"
"io=0"
"19.64258,NaN"
"52.69636,-117.20701"
"io=1"
Non so perché sto riprendendo NaN.Quando utilizzo i limiti per ottenere un livello di zoom, penso che il valore NaN stia facendo sì che map.getBoundsZoomLevel(bounds) restituisca 0, il che non è corretto.Sto usando GLatLngBounds in modo errato?
Soluzione
L'esempio di Google Maps utilizza questo codice...
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
...che sta inserendo i limiti SudOvest/NordEst in una variabile prima di tentare di ottenere le singole coordinate lng/lat.Forse c'è qualcosa con le valutazioni "nidificate" che causa problemi.Hai provato l'approccio granulare per vedere se ottieni i dati di cui hai bisogno?
Altri suggerimenti
Ho trovato quell'esempio anche attraverso le mie ricerche su Google e ci ho giocato.Non era quello il problema.
Ho trovato il mio bug.Nessuno sarebbe stato in grado di risolvere il problema.Si scopre che subito prima di testare i limiti avevo centrato la mappa con dati errati.Ho fatto qualcosa del genere lngSpan = northEast.lng() - southWest.lng();
tuttavia JavaScript ha interpretato la mia var come una stringa.COSÌ (maxLng-minLng)/2 + minLng
restituisce qualcosa di simile "20.456-116.1178"
come il lng
.Ho centrato la mappa su var centerPoint = new GLatLng(setLat, setLng);
e dopo l'API delle mappe diventa un po' strana ;)
Grazie per l'aiuto comunque.