Saya mencoba membuat penanda poligon di peta Google dengan mengonversi string yang berisi posisi lat/lng menjadi array. Saya mengalami kesalahan berikut:

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

Ketika saya memeriksa array di konsol browser, itu terlihat baik-baik saja (indeks [0]):

lat:"12.3394541791301"
lng:"55.59020913559151"

String memiliki struktur berikut:

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

Jadi pertama saya ganti setiap detik comma dengan ;

Ketika saya menggunakan split(";") untuk membuat array saya, yang saya ketika loop dan Push ke array baru dengan tombol yang tepat:

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})
}

Adakah saran untuk apa yang bisa menyebabkan masalah?

1
TietjeDK 8 Agustus 2017, 09:35

2 jawaban

Jawaban Terbaik

Saya tidak yakin apa itu penanda poligon, tetapi saya menduga maksud Anda marker.

Jika Anda melihat dokumentasi latlng, nilai untuk kunci lat dan lng seharusnya Number bukan String. Jadi untuk memperbaiki masalah Anda, Anda dapat menggunakan api Number(...) untuk mentransmisikan koordinat string ke dalam angka.

Contoh:

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) })
}

Referensi:

LatLng: https://developers.google.com/maps/ dokumentasi/javascript/contoh/map-latlng-literal

3
Samuel Toh 8 Agustus 2017, 06:53

Coba lakukan cara ini:

Plus ini akan mengonversi nilai string Anda dari lat, lng ke numerik. Atau coba parseFloat()

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

ATAU

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

Masalah bahwa Anda memiliki string, bukan angka. Konversi saja, katakan jika itu membantu.

lat:"12.3394541791301" // strings, convert to numbers
lng:"55.59020913559151"
3
Constantine 8 Agustus 2017, 06:49