2015-06-28 4 views
0

Я с использованием API Карт Google, и у меня есть какие-то координаты, которые я получил в LongLat, что мне нужно, чтобы преобразовать в LatLongреверс элементы в виде строки в массив

Вот строка:

1.5887868,50.8315241|1.5830702,50.8466931|1.590201,50.827209|1.5887868,50.8315241 

где 1.5887868 является первым продольной координатой, 50.8315241 является первой широтной cooridnate, а пары разбиты |

это мое убеждение в том, что мне нужно ча Нге порядок этих спаренных элементов, потому что Google может принимать только LatLng здесь (LngLat вызывает ошибку)

center:new google.maps.LngLat(50.8315241, 1.5887868), 

Что это самый простой способ пойти по этому поводу? Или - есть ли способ использовать мои координаты в формате long,lat?

+0

Как вы работаете "как" координаты? – geocodezip

+0

они добавляются в массив, а затем добавляются в объект 'map' с помощью' map.data.addGeoJson (item) '- потому что GeoJson' long, lat', который имеет полный смысл ......... Я использую координаты GeoJson для создания «LatLong», чтобы я мог динамически находить центр многоугольника. –

ответ

3

Это должно делать то, что вы ищете:

var longLatStr = "1.5887868,50.8315241|1.5830702,50.8466931|1.590201,50.827209|1.5887868,50.8315241"; 

var latLongStr = longLatStr.split("|").map(function(longLatPair){ 
    var longLatPairArr = longLatPair.split(","); 
    return longLatPairArr[1] + "," + longLatPairArr[0]; 
}).join('|'); 
+0

красивый - большое вам спасибо! –

2

Вы можете поменять что-нибудь в строку с помощью функции .replace() (зависит от регулярных выражений). Для того, что бы вы захотели поменять местами, сопоставьте оба, зафиксировав каждую вещь, которую нужно поменять местами в круглых скобках, затем используйте $n в строке замены, чтобы указать, куда вы хотите переместить. Смотрите пример:

var c = '1.5887868,50.8315241|1.5830702,50.8466931|1.590201,50.827209|1.5887868,50.8315241'; 
var swapped = c.replace(/(-?\d+\.\d+),(-?\d+\.\d+)/g, '$2,$1'); 

Вы можете прочитать полную документацию по использованию специальных шаблонов замены на MDN.

+0

большое спасибо! Этот ответ работает почти идеально. Единственная проблема заключается в том, что регулярное выражение не фиксирует отрицательный знак *, если он существует *, поэтому '-1.58,50.831' становится' -50.831,1.58'. Я попытался изменить первую часть замены на '/ (- \\ d + \\. \\ d + | \\ d + \\. \\ d +), (\\ d + \\. \\ d +) /' (to включают '|'), но теперь своп не выполняется. Что я здесь делаю неправильно? –

+1

@JohnWu Вам нужно поставить отрицательный знак перед обоими числами и сделать его необязательным. Итак, запустите каждый круглый стол с помощью '(-?'. Я бы сохранил запятую вместо трубы, вы пытались переключать числа с обеих сторон запятых, которые я думал? Ответ отредактирован, чтобы показать в примере. – Pluto

Смежные вопросы