2011-07-21 12 views
9

Chcę przekonwertować ciąg z wzorcem w stylu "(53.324523, 43.252352)" na latencję. Znalazłem już odpowiednią funkcję:Konwertuj ciąg na latlng google maps

var input = latlngArray[i]; 
var latlngStr = input.split(",",2); 
var lat = parseFloat(latlngStr[0]); 
var lng = parseFloat(latlngStr[1]); 
latlngArray[i] = new google.maps.LatLng(lat, lng); 

Problem polega na tym, że nie mogę uzyskać odpowiedniego łaciata. Kiedy używam alertu do wyświetlania go, mówi tylko NaN, podczas gdy zmienna lng wyświetla odpowiednią wartość.

Mam to. Thx za pomoc.

var input = latlngArray[i].substring(1, latlngArray[i].length-1); 
var latlngStr = input.split(",",2); 
var lat = parseFloat(latlngStr[0]); 
var lng = parseFloat(latlngStr[1]); 
latlngArray[i] = new google.maps.LatLng(lat, lng); 
+0

Czy usunięto '(' i ')' – Bolu

+0

już myślałem, że to może? być coś takiego. Myślę, że muszę szukać funkcji, która usuwa te. – OhSnap

Odpowiedz

1

Szybka naprawa po var input. Wygląda na to, '(' jest brudząc się LAT konwersji:

input = input.replace('(',''); 
+0

Pamiętaj, że twoje rozwiązanie zakłada, że ​​"(" jest zawsze na pozycji 0. Biała przestrzeń na początku złamie twój kod. t naprawdę trzeba usunąć ciąg ")", ponieważ pierwszy znak w ciągu parse to liczba, a więc wszystkie pozostałe znaki w łańcuchach są ignorowane. – TreyA

0

ogólne rozwiązanie może być:

var locationToStringed = "(53.324523, 43.252352)"; 
var input = locationToStringed.replace('(', ''); 
var latlngStr = input.split(",", 2); 
var lat = parseFloat(latlngStr[0]); 
var lng = parseFloat(latlngStr[1]); 
var parsedPosition = new google.maps.LatLng(lat, lng);