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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top