2017-08-08 19 views
1

lat/lngの位置を含む文字列を配列に変換することで、Googleマップにポリゴンマーカーを作成しようとしています。私は、ブラウザのコンソールでの配列を検査するとき、それは正常に見えるGoogleマップLatLngではない

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

(インデックス[0]):私は、次のようなエラーに実行しているよ

lat:"12.3394541791301" 
lng:"55.59020913559151" 

文字列は、以下の構造を有しますだから、最初に私が;

で毎秒 commaを交換
'12.3394541791301,55.59020913559151, 12.3444451791347,55.5930451355941, 12.3808361791686,55.6099911356099, 

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

任意の提案をするどのような問題を引き起こす可能性があります:私はループと右のキーを使用して新しい配列に押し込み私は私の配列を作成するためにsplit(";")を使用して、?

答えて

1

ポリゴンマーカーは何ですか、あなたはを意味すると思われます。

あなたは緯度経度のドキュメントを見れば、キーlatlngの値がNumberないStringことになっています。したがって、問題を解決するには、の座標を数値にキャストするためにapi Number(...)を使用できます。

例:

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

参考文献:

緯度経度:https://developers.google.com/maps/documentation/javascript/examples/map-latlng-literal

2

は、この方法を行うようにしてください:

これらのプラスが数値にLAT、LNGのあなたの文字列の値を変換します。それとも、代わりに数字の文字列を持っているparseFloat()

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

OR

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

問題を試してみてください。変換するだけで、助けてくれたら言う。

lat:"12.3394541791301" // strings, convert to numbers 
lng:"55.59020913559151" 
+0

loooolllll ..........正しいとfisttことは十分ではありません... ....... pew pwpe pw epwepw – Constantine

関連する問題