Хобрук: Ваш путь к мастерству в программировании

База данных вместо файла kml

Интересно, можно ли подключить БД к Google Maps API для рендеринга полигонов, точек и т. д.? Если хранить все координаты kml, связанные с полигонами, можно ли будет отобразить их в базе данных fra или мне нужно создать файл kml для его визуализации?

Есть ли пример?

Спасибо!


  • Ваш вопрос слишком широк. Быстрый ответ: да, вы можете. Как предложил @JasonM1 ниже, вам понадобится клиент-серверное решение, чтобы иметь возможность запрашивать вашу базу данных (на стороне сервера) и отображать полигоны на карте (на стороне клиента). 08.10.2015

Ответы:


1

Файл KML не требуется для визуализации точек, многоугольников и т. д. с использованием API Карт Google. Однако слой KML — удобный способ представления сложных геопространственных объектов.

Серверная база данных с HTTP-доступом может возвращать список координат карты, который ваш клиентский код может преобразовать в соответствующие формы с помощью Google Maps API.

Google Maps API предоставляет примеры для создания различных фигур.

Пример создания простого точечного маркера:
https://developers.google.com/maps/documentation/javascript/examples/marker-simple

Пример создания простого многоугольника:
https://developers.google.com/maps/documentation/javascript/examples/polygon-simple

Код клиента должен будет запрашивать данные из базы данных, например, из сервлета с доступом к базе данных. База данных, скорее всего, будет работать на другом порту или с другого сервера, поэтому javascript не сможет получить к ней прямой доступ.

Ваш серверный компонент может запрашивать базу данных и возвращать отформатированный KML или он может возвращать результат JSON, который будет отображаться вашим клиентским кодом. Зависит от того, хотите ли вы написать больше кода внутреннего сервера или кода JavaScript на клиенте.

07.10.2015

2

хммм ... Сейчас я использую другое решение (данные из БД для отображения в Google Earth, которое является приложением по умолчанию для файла KML) и надеюсь, что это поможет:

(может относиться к https://sites.google.com/site/canadadennischen888/home/kml/auto-refresh-3d-tracking ) (плюс, на моей другой странице есть пример кода Java)

Подробности как:

подготовьте службу RestFul для создания файла KML из БД (образец KML, как указано выше по ссылке)

Мой другой код jsp сгенерирует файл KMZ, в котором есть ссылка на мой сервис Restful. Файл KMZ имеет onInterval (как внизу)

Веб-страница Jsp позволяет пользователю загружать файл KMZ.

Когда Google Планета Земля откроет файл KMZ, Google Планета Земля автоматически обновится, чтобы получить новые данные из этой службы Restful.

При каждом обновлении сервер будет отправлять последние обновления данных KML с новыми данными в GE.

Образец КМЗ:

     <?xml version="1.0" encoding="UTF-8"?>
      <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" 
      xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
      <NetworkLink> 
      <name>[email protected]</name> 
      <open>1</open> 
      <Link> 
      <href>http://localhost:9080/google-earth-project/rest/kml/10001/20002</href> 
      <refreshMode>onInterval</refreshMode> 
      </Link>
      </NetworkLink>
      </kml>

результат: введите здесь описание изображения

07.10.2015

3

Спасибо за ваш ответ. Я не знаю, стану ли я немного мудрее, но, по крайней мере, я знаю, что это возможно.

Я использовал Shape2Sql для сохранения координат в базе данных.

Но, как я понимаю, мне нужно каким-то образом преобразовать это в geojson, прежде чем оно сможет отображаться на картах Google? если я правильно понимаю? Насколько я понимаю, рендеринг geojson в основном такой же, как рендеринг kml, когда речь идет о файлах. Но я не знаю, как подключиться к базе данных.

Я делаю список из базы данных:

var adresses = _unitOfWork.GeoAddressRepository.Get(q => q.GeoRouteNorpost.Code == "3007106", includeProperties: "GeoRouteNorpost").ToList();

        var points = new List<LatLong>();

           foreach  (var address in adresses)
           {
               points.Add(new LatLng() { Lat = "59.948261", Lng = "10.750699" });
               points.Add(new LatLng() { Lat = "59.943128", Lng = "10.755814" });
               points.Add(new LatLng() { Lat = "59.941245", Lng = "10.746084" });
               points.Add(new LatLng() { Lat = "59.943527", Lng = "10.742786" });
               points.Add(new LatLng() { Lat = "59.946824", Lng = "10.744435" });
               points.Add(new LatLng() { Lat = "59.946813", Lng = "10.744446" });
               points.Add(new LatLng() { Lat = "59.947107", Lng = "10.748241" });
               points.Add(new LatLng() { Lat = "59.947827", Lng = "10.749525" });
               points.Add(new LatLng() { Lat = "59.948248", Lng = "10.750699" });



           }

В этом примере показан полигон на карте. Но я не уверен, как получить эти координаты из базы данных и как их решить, когда это несколько полигонов.

Как я уже писал, я сохранил координаты в БД с помощью shape2Sql. Итак, теперь у меня есть поле для геометрии. Если я посмотрю на пространственный результат на сервере sql, это выглядит правильно. Но как я могу отобразить это на картах Google?

Я благодарен за любую помощь :)

13.10.2015
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..