Google maps LatLng не число

1

Я пытаюсь создать маркеры полигонов на карте Google, преобразовывая строку, содержащую позиции lat/lng в массив. Я столкнулся с следующей ошибкой:

mc {message: "at index 0: not a LatLng or LatLngLiteral: in property lat: not a number", name: "InvalidValueError"

Когда я проверяю массив в консоли браузера, он выглядит отлично (index [0]):

lat:"12.3394541791301"
lng:"55.59020913559151"

Строка имеет следующую структуру:

'12.3394541791301,55.59020913559151, 12.3444451791347,55.5930451355941, 12.3808361791686,55.6099911356099,

Поэтому сначала я заменяю каждую вторую comma ;

Когда я использую split(";") для создания моего массива, который i, когда цикл и нажимает на новый массив с правильными ключами:

s = s.replace(/([^,]+,[^,]+),/g,'$1;');
s = s.split(";");

for (var i = 0; i < s.length; i++) {
        var lat = s[i].split(',')[0];
        var lng = s[i].split(',')[1];
        // Push to array which is used by Google Maps
        denmarkLatLong.push({lat: lat, lng: lng})
}

Какие-либо предложения о том, что может вызвать проблему?

Теги:
arrays
google-maps

2 ответа

1
Лучший ответ

Я не уверен, что такое маркер полигона, но я подозреваю, что вы имели в виду marker.

Если вы посмотрите на документацию latlng, значение для ключей lat и lng должно быть Number not String. Таким образом, чтобы исправить вашу проблему, вы можете использовать api Number(...) для перевода string координат в числа.

Пример:

s = s.replace(/([^,]+,[^,]+),/g,'$1;');
s = s.split(";");

for (var i = 0; i < s.length; i++) {
        var lat = s[i].split(',')[0];
        var lng = s[i].split(',')[1];
        // Push to array which is used by Google Maps
        denmarkLatLong.push({lat: Number(lat), lng: Number(lng) })
}

Рекомендации:

LatLng: https://developers.google.com/maps/documentation/javascript/examples/map-latlng-literal

2

Попробуйте сделать так:

Эти плюсы преобразуют ваши строковые значения lat, lng в числовые. Или попробуйте parseFloat()

 denmarkLatLong.push({lat: +lat, lng: +lng})

ИЛИ ЖЕ

denmarkLatLong.push({lat: parseFloat(lat), lng: parseFloat(lng)})    

Проблема в том, что у вас есть строки вместо чисел. Просто конвертируй, скажи, если это поможет.

lat:"12.3394541791301" // strings, convert to numbers
lng:"55.59020913559151"
  • 0
    loooolllll .......... не достаточно, чтобы быть правильным и первым .......... pew pewpe pw epwepw

Ещё вопросы

Сообщество Overcoder
Наверх
Меню