Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Rambler
-39 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 72
1

Работа с Json. Нужно 3 координаты вывести в отдельный Json файл и вызвать его при нажатии на кнопку.

08.02.2019, 10:06. Просмотров 922. Ответов 4
Метки нет (Все метки)

Здравствуйте дорогие форумчане.
Нужна ваша помощь, в массиве имеется три координаты и их описание которые при наведение на них высвечивается соответствующий текст, этих координат нужно вывести в отдельный Json файл и вызвать его при нажатии на кнопку. Как можно осуществить данное действие? Заранее спасибо.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
function ******cy () {
var array = [
    [41.387942, 69.2711688, 'Flora Medicaments'],
    [41.374549, 69.304909, '******zon Trade'],
    [41.372610, 69.309215, 'Oxymed']
        ].map(e => new google.maps.Marker({
        position: {lat: e[0], lng: e[1]},
        map: myMap,
        animation: google.maps.Animation.DROP,
        title: e[2]
    }));
        return array
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2019, 10:06
Ответы с готовыми решениями:

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Дополнительные сведения: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into...

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Всем привет! Помогите, плиз, разобраться с ошибкой: An unhandled exception of type...

Как записать json файл в БД и вывести его оттуда
Всем привет. В php я не очень силен, и поэтому возникла такая проблема: я хочу написать php-скрипт,...

Java, JSON и JSON Simple. Непонятка с созданием объекта JSON на сервере для отправки на фронт
Здравствуйте. Разрабатываю интернет-магазин на Java. Мне нужно на фронте получить список товаров из...

Null reference при десерелизации JSON (Newtonsoft.Json)
Задача: достать из JSON ответа Название фирмы. Использую библиотеку Newtonsoft.Json. Сам код:...

4
amr-now
Эксперт JS
2635 / 1513 / 715
Регистрация: 14.06.2018
Сообщений: 3,566
08.02.2019, 11:16 2
Здравствуйте.
Rambler, объясните нормальную конечную цель.

Дано:
некий сторонний сервис, предоставляющий по запросу страшный и длинный тестовый файл в формате json.
Вы его загрузили себе.
Куда загрузили? В браузер или на nodeJS ? От этого сильно зависят дальнейшие действия.

Преобразовать страшный и длинный json можно как угодно.
Дальше то что делать?
0
Rambler
-39 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 72
08.02.2019, 20:16  [ТС] 3
Ситуация такая, Как видите координаты с данными находится в неком массиве с идентификатором array. Вынести эти координаты то есть элементы массива в отдельный файл JSON и при клике нужно вызвать его.
0
amr-now
Эксперт JS
2635 / 1513 / 715
Регистрация: 14.06.2018
Сообщений: 3,566
09.02.2019, 12:23 4
Rambler, в задаче очень щекотливый вопрос.
Поскольку все данные в текстовом виде будут полностью продублированы для каждого элемента массива,
нужно ли многократно дублировать myMap и google.maps.Animation.DROP ?
Или сохранять в хранилище только координаты с надписью ?
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        // Имитация гугль-сервиса, не обращаясь к гуглю.
        let google = {
            maps: {
                Marker: class Marker {
                    constructor(obj) {
                        this.position = obj.position;
                        this.map = obj.map;
                        this.animation = obj.animation;
                        this.title = obj.title;
                    }
                },
                Animation: { DROP: 777 }
            }
        };
        let myMap = {};
 
        // Тестируемый код
        function ******cy() {
            let array = [
                [41.387942, 69.2711688, 'Flora Medicaments'],
                [41.374549, 69.304909, '******zon Trade'],
                [41.372610, 69.309215, 'Oxymed']
            ].map(e => new google.maps.Marker({
                position: { lat: e[0], lng: e[1] },
                map: myMap,
                animation: google.maps.Animation.DROP,
                title: e[2]
            }));
            return array;
        }
 
        localStorage.clear(); // в целях тестирования очистить локальное хранилище
 
        // Если в локальном хранилище было пусто, то результат функции ******cy() сохранить в локальном хранилище
        if (localStorage.length === 0)
            localStorage.setItem("******cy", JSON.stringify(******cy()));
 
        function clickHandler(e) {
            let select = document.getElementById("******cy");
 
            // Взять из локального хранилища массив. Массив сейчас из анонимных объектов.
            let array = JSON.parse(localStorage.getItem("******cy"));
            console.log(array);
            // Превратить все элементы массива из анонимных объектов в экземпляры google.maps.Marker
            for (let item of array) {// Тот самый foreach. В отличие от map() новые элементы массива не создает.
                Object.setPrototypeOf(item, google.maps.Marker.prototype);
                select.add(new Option(item.title, item.title));
            }
            console.log(array);
        }
    </script>
    <form>
        <label for="******cy">******cy: </label>
        <select id="******cy" style="width: 150px;">
        </select>
        <input type="button" id="load" style="width: 100px;" value="Загрузить" />
    </form>
    <script>
        // Повесить обработчик на кнопку. когда DOM уже загрузился
        document.getElementById("load").onclick = clickHandler;
    </script>
</body>
</html>
Именно браузер сам по себе в файл не сохраняет, он умеет сохранять в разноообразные локальные хранилища.

Добавлено через 1 час 3 минуты
Вот вариант, когда в JSON сохраняются только координаты с надписью. Без myMap и google.maps.Animation.DROP
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        // Имитация гугль-сервиса, не обращаясь к гуглю.
        let google = {
            maps: {
                Marker: class Marker {
                    constructor(obj) {
                        this.position = obj.position;
                        this.map = obj.map;
                        this.animation = obj.animation;
                        this.title = obj.title;
                    }
                },
                Animation: { DROP: 777 }
            }
        };
        let myMap = {};
 
        // Тестируемый код
        let array = [
            [41.387942, 69.2711688, 'Flora Medicaments'],
            [41.374549, 69.304909, '******zon Trade'],
            [41.372610, 69.309215, 'Oxymed']
        ];
 
        localStorage.clear(); // в целях тестирования очистить локальное хранилище
 
        // Если в локальном хранилище было пусто, то массив координат с надписями сохранить в локальном хранилище
        if (localStorage.length === 0)
            localStorage.setItem("******cy", JSON.stringify(array));
 
        function ******cyConverter(arr) {
            return arr.map(e => new google.maps.Marker({
                position: { lat: e[0], lng: e[1] },
                map: myMap,
                animation: google.maps.Animation.DROP,
                title: e[2]
            }));
        }
 
        function clickHandler(e) {
            let select = document.getElementById("******cy");
 
            // Взять из локального хранилища массив координат с надписями. 
            let array = JSON.parse(localStorage.getItem("******cy"));
            console.log(array);
            // Скопировать элементы массива из анонимных объектов в экземпляры google.maps.Marker
            let farmacy = ******cyConverter(array);
            for (let item of farmacy) {// Тот самый foreach. В отличие от map() новые элементы массива не создает.
                select.add(new Option(item.title, item.title));
            }
            console.log(farmacy);
        }
    </script>
    <form>
        <label for="******cy">******cy: </label>
        <select id="******cy" style="width: 150px;">
        </select>
        <input type="button" id="load" style="width: 100px;" value="Загрузить" />
    </form>
    <script>
        // Повесить обработчик на кнопку. когда DOM уже загрузился
        document.getElementById("load").onclick = clickHandler;
    </script>
</body>
</html>
0
Rambler
-39 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 72
09.02.2019, 20:19  [ТС] 5
Добавлено через 11 минут
Я вижу Вы знаток в этой области. Мне нужна Ваша помощь по работе с JSON.
 Комментарий модератора 

Правила форума
4. Порядок создания тем.
4.6 Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
5. Запреты и ограничения.
5.9 Запрещено отсылать пользователей из тематических разделов в разделы фриланса, а также рекламировать свои услуги или предлагать/просить/требовать оплату за помощь, кроме разделов для платных услуг.
0
09.02.2019, 20:19
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2019, 20:19

Вывести поточные координаты курсора мыши относительно формы и экрана, при нажатии на кнопку-реверсное изменение кнопок мыши C++
доброй ночи, уважаемые программисты, умные школьники, преуспевающие студенты, а также все участники...

Скачать JSON и вывести его
Здравствуйте! Как сделать, чтобы при входе в программу она скачивала базу JSON с сайта (предположим...

При нажатии на кнопку вызвать сочетание клавиш
Можно ли сделать так, чтобы при нажатии на кнопку было вызвано сочетание клавиш. Нужно: Ctrl+Del,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.