Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2020, 01:08
Аспирант
Отправить личное сообщение для misha.korolcov Посмотреть профиль Найти все сообщения от misha.korolcov
 
Регистрация: 05.09.2019
Сообщений: 84

распарсить строку
Доброе время суток есть строка надо распарсить и
вывести в консоли точки из polygon не знаю как сделать ранее парсил строку JSON.parse но здесь не
не выйдет

"},{"id_gbr":"2","region":"Киев","number":"72","color":"#fccc00","test":"50.49028, 30.59039; 50.48491, 30.58503; 50.43714, 30.62448;50.43885, 30.638;50.48427, 30.61513;50.48435, 30.61558;50.49705, 30.61581","polygon":"[{"lat": 50.490536193901626, "lng": 30.406556772949216}, {"lat": 50.47984084266476, "lng": 30.406929946258515}, {"lat": 50.47078196302313, "lng": 30.406959796813908}, {"lat": 50.459762927731, "lng": 30.40719115930176}, {"lat": 50.45292392846263, "lng": 30.45728290557861}, {"lat": 50.44994631827171, "lng": 30.4758771926422}, {"lat": 50.45739306296883, "lng": 30.48030941610716}, {"lat": 50.46396401821503, "lng": 30.487648547058143}, {"lat": 50.465084495378484, "lng": 30.487091254669167}, {"lat": 50.46862927142601, "lng": 30.489870630294718}, {"lat": 50.47374748220552, "lng": 30.49342754299164}, {"lat": 50.47902899701488, "lng": 30.479904148681612}, {"lat": 50.485619797196634, "lng": 30.470794103759772}, {"lat": 50.49062613468771, "lng": 30.458250831298756}, {"lat": 50.48960708146419, "lng": 30.450326954315074}, {"lat": 50.48733200046696, "lng": 30.443948029724083}, {"lat": 50.48942559218542, "lng": 30.427226507171667}, {"lat": 50.48880683956265, "lng": 30.429551666610678}, {"lat": 50.490763651412536, "lng": 30.415650960502603}]"}]]
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2020, 02:49
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Не знаю, что у вас произошло с JSON, но та часть строки, которую вы предоставили, из неё видно, что значение свойства polygon является строкой в формате JSON, которое можно разобрать и точки вывести на карту.

<body>
<script>
var coords = [{"lat": 50.490536193901626, "lng": 30.406556772949216}, {"lat": 50.47984084266476, "lng": 30.406929946258515}, {"lat": 50.47078196302313, "lng": 30.406959796813908}, {"lat": 50.459762927731, "lng": 30.40719115930176}, {"lat": 50.45292392846263, "lng": 30.45728290557861}, {"lat": 50.44994631827171, "lng": 30.4758771926422}, {"lat": 50.45739306296883, "lng": 30.48030941610716}, {"lat": 50.46396401821503, "lng": 30.487648547058143}, {"lat": 50.465084495378484, "lng": 30.487091254669167}, {"lat": 50.46862927142601, "lng": 30.489870630294718}, {"lat": 50.47374748220552, "lng": 30.49342754299164}, {"lat": 50.47902899701488, "lng": 30.479904148681612}, {"lat": 50.485619797196634, "lng": 30.470794103759772}, {"lat": 50.49062613468771, "lng": 30.458250831298756}, {"lat": 50.48960708146419, "lng": 30.450326954315074}, {"lat": 50.48733200046696, "lng": 30.443948029724083}, {"lat": 50.48942559218542, "lng": 30.427226507171667}, {"lat": 50.48880683956265, "lng": 30.429551666610678}, {"lat": 50.490763651412536, "lng": 30.415650960502603}];

/* на странице */
var dir = coords.map(({ lat, lng }) => `!4m3!3m2!1d${lat}!2d${lng}`).join("");
var pb = `!1m${4*coords.length+2}!4m${4*coords.length+1}!3e2${dir}!5m1!1sru`;
var url = `https://www.google.com/maps/embed?pb=${pb}`;
var frame = document.createElement("iframe");
frame.src = url;
frame.style.cssText = "position:absolute;border:none;width:100%;height:100%;left:0;top:0;";
document.body.appendChild(frame);

/* в консоли */
var dir = coords.map(({ lat, lng }) => [lat, lng].join(",")).join("/");
var url = `https://www.google.com/maps/dir/${dir}/data=!4m2!4m1!3e2`;
console.log("Точки на карте", url);
</script>

Последний раз редактировалось Malleys, 27.05.2020 в 03:04.
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2020, 11:33
Аспирант
Отправить личное сообщение для misha.korolcov Посмотреть профиль Найти все сообщения от misha.korolcov
 
Регистрация: 05.09.2019
Сообщений: 84

я получаю из sql через $pointsPolygon = json_encode($pointsPolygon); потому такой страний джон еслиб не бил масив в sql в поле полигон JSON.parse помог а так я решил проблему если кому интересно вот код
const array = JSON.parse(dotsPolygon.replace(/"(\[.*?\])"/g, "$1"));
console.log(array[0].polygon)
спс за помощь
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2020, 11:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от misha.korolcov
потому такой страний джон
И что в нем странного?
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2020, 22:16
Аспирант
Отправить личное сообщение для misha.korolcov Посмотреть профиль Найти все сообщения от misha.korolcov
 
Регистрация: 05.09.2019
Сообщений: 84

тем что json.parse не парсит а пишет невалидний джейсон потому тока через регулярку
Ответить с цитированием
  #6 (permalink)  
Старый 29.05.2020, 02:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А почему вы не разбираетесь с причиной тут "я получаю из sql через $pointsPolygon = json_encode($pointsPolygon);"?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно распарсить строку в формат даты (native js)? s24344 Элементы интерфейса 5 26.01.2019 07:01
Как преобразовать строку в шаблонную строку (template literals) daima Элементы интерфейса 5 01.09.2017 17:14
Распарсить строку дата, время. регулярка. sign63 Общие вопросы Javascript 3 08.08.2016 23:32
Вставить значение переменных в строку someone Общие вопросы Javascript 2 03.11.2013 00:14
Как распарсить строку? vostok Серверные языки и технологии 7 30.03.2013 06:48