2016-05-22 2 views
0

Я довольно новичок в программировании. Мне нужно извлечь координаты из ссылки, получаемой при получении моих данных. Объект Я заинтересован в выглядит так:Получение долготы/широты по ссылке в JavaScript

event: { 
"type": "message", 
"attachments": [{ 
    "facebookUrl": "https://www.bing.com/maps/default.aspx?v=2&pc=FACEBK&mid=8100&where1=52.217125%2C+5.959805&FORM=FBKPL1&mkt=en-US" 
    }], 
} 

Итак, я заинтересован в event.attachments[0].facebookUrl (это право нотация для доступа к нему?). Какой правильный подход получить координаты lat: 52.217125 и lon: +5.959805 из этого? Проблема в том, что lon может начинаться с + или -. Я не знаю, как это сделать, например, для сопоставления регулярных выражений.

+1

ваше примечание 'event.attachments [0] .facebookUrl' правильно – duncan

ответ

1

Вы ищете библиотеку анализа URL. Оттуда вы можете получить запрос (все прошло?) И передать его в библиотеку строк запроса, которая даст вам аргументы.

Я не связываюсь с ними, потому что поиск хороших библиотек - важный навык, и это вездесущие библиотеки.

+0

Я попытался использовать регулярное выражение вместо использования библиотеки, но это не сработает. '/ ([+ -]? \ D * \.? \ D *)% 2c ([+ -]? \ D * \.? \ D *) \ & /' – bdbdbd

+1

Не используйте регулярное выражение. Количество допущений, которые вы делаете о структуре URL-адреса, сходит с ума. Долгие латы всегда будут в таком порядке? Что, если что-то другое, такое как уровень масштабирования или высота, имеет достаточно подобную структуру, чтобы ее подхватили? Не тратьте время на то, чтобы сделать код kludge, когда общая проблема уже решена. Если это был узел, это будет 'url.parse (facebookURL, true) .query.where1.split (',')' для получения массива '[lat, long]'. https://nodejs.org/docs/latest/api/url.html – Russbear

+0

Это работает как шарм! – bdbdbd

0

Для меня подходит следующее соответствие регулярному выражению: /([+-]?\d*\.?\d*)%2c([+-]?\d*\.?\d*)/i.

Это дает мне массив с 3-х элементов: [52.217125%2C+5.959805, 52.217125, +5.959805] Так что я просто использовать arr[1] и arr[2].

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