Форум сайта kirov2kml
Добро пожаловать, Гость
Пожалуйста Вход или Регистрация.    Забыли пароль?
Как указать названия улиц и номера домов через KML
(0 чел.) 
Вниз
Сообщения темы: Как указать названия улиц и номера домов через KML
#481
sieur
Читатель
Постов: 8
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 0
Уважаемый админ!

Опишите пожалуйста какими тегами указать в KML-файле на 2D карте:
1) названия улиц вдоль нарисованных полигонов
2) номера домов нарисованных как многоугольники

Очень нужно, очень прошу. Спасибо!
 
Зарегистрирован Зарегистрирован
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#482
proman
Главный редактор
Постов: 241
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 2
sieur писал(а):
Уважаемый админ!

Опишите пожалуйста какими тегами указать в KML-файле на 2D карте:
1) названия улиц вдоль нарисованных полигонов
2) номера домов нарисованных как многоугольники

Очень нужно, очень прошу. Спасибо!


Отвечу на первый вопрос.
Для того, чтобы создать отображаемую подпись которая будет размещена прямо на линии,
и при этом будет повторять контуры линии нужно:
- в описании стиля для линии в разделе описания <LineStyle></LineStyle> добавить строчку
<gx:labelVisibility>1</gx:labelVisibility>

Пример кода.
Код:


<?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">
   <Document>
    <Style id="style_street_2">
     <LabelStyle>
      <scale>1.3</scale>
     </LabelStyle>
     <LineStyle>
      <color>7f0000ff</color>
      <width>3</width>
      <gx:labelVisibility>1</gx:labelVisibility>
     </LineStyle>
    </Style>
    <StyleMap id="style_street">
     <Pair>
      <key>normal</key>
      <styleUrl>#style_street_1</styleUrl>
     </Pair>
     <Pair>
      <key>highlight</key>
      <styleUrl>#style_street_2</styleUrl>
     </Pair>
    </StyleMap>
    <Style id="style_street_1">
     <LabelStyle>
      <scale>1.3</scale>
     </LabelStyle>
     <LineStyle>
      <color>7f00aaff</color>
      <width>3</width>
      <gx:labelVisibility>1</gx:labelVisibility>
     </LineStyle>
    </Style>
     <Placemark id="182">
      <name>Ленина, ул.</name>
      <description>Ленина, ул.</description>
      <styleUrl>style_street</styleUrl>
      <LineString>
       <tessellate>1</tessellate>
       <coordinates>
  49.67949788673522,58.61845015710651,0 49.67950491942187,58.61843188943448,0 49.67957524977917,58.61816429251725,0 
  49.67948912572488,58.61795050953787,0 49.67961550364836,58.61690091839354,0 49.67979466401665,58.61536088982491,0 
  49.67982962609496,58.61407454340074,0 49.6800760555542,58.61195039065766,0 49.68040895126108,58.6084228720535,0 
  49.68066853309821,58.60549580175127,0 49.68079791403373,58.60412337304908,0 49.68089332792835,58.60361125045066,0 
  49.68106656909769,58.60195950157394,0 49.68115887681172,58.60071467438369,0 49.68118298638791,58.60004574017255,0 
  49.68141944398368,58.59692120057888,0 49.68161336179767,58.59407558172412,0 49.68174235406331,58.59214640736838,0 
  49.68204796582543,58.58747686793274,0 49.68233021808555,58.58568112158866,0 49.6828823491842,58.58480726893202,0 
  49.68374122407874,58.58342778953064,0 49.6842776264448,58.58242815741087,0 49.68437303046393,58.58222441590723,0 
  49.68444909357234,58.58203616642521,0 49.6844777067139,58.58182815889688,0 49.6845499891914,58.5796536184287,0 
  49.68457295350635,58.57880657916203,0 49.68465891947489,58.57608907672069,0 49.68475223804629,58.57351648818436,0 
  49.6848452125016,58.57106324041552,0 49.68495123787696,58.56791299977022,0 49.68505647052028,58.56602608547925,0 
  49.68508379736619,58.56383340267418,0 49.6850879941244,58.56293868623958,0</coordinates>
      </LineString>
     </Placemark>
   </Document>
  </kml>



Относительно второго вопроса...
Я не совсем понял чего Вы хотите добиться?
Поясните пожалуйста.
 
Зарегистрирован Зарегистрирован
 
Последнее редактирование: 01.05.2012 19:06 Редактировал proman.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#483
sieur
Читатель
Постов: 8
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 0
Спасибо.

Относительно первого: попробовал Ваш пример на сервисе kml-samples.googlecode.com/svn/trunk/interactive/index.html но к сожалению надписи на линии так и не видно. Название ул. Ленина появляется только при клике по линии, при этом пишет Ваш браузер не поддерживает плавающие фреймы! Попробовал ФФ, Оперу и Хром, результат тот же. Это связано с фреймами или что то не так делаю?

Относительно второго: g.co/maps/swggr
Дом на улице создан как многоугольник с <name>77</name>, как вывести этот номер сверху текстом, но не так чтоб он всегда был посредине дома, а чтоб я мог расположение текста настроить по двум координатам?

p.s. а вообще как можно любые тексты добавлять в KML?
 
Зарегистрирован Зарегистрирован
 
Последнее редактирование: 01.05.2012 18:36 Редактировал .
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#484
proman
Главный редактор
Постов: 241
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 2
sieur писал(а):
Спасибо.

Относительно первого: попробовал Ваш пример на сервисе kml-samples.googlecode.com/svn/trunk/interactive/index.html но к сожалению надписи на линии так и не видно. Название ул. Ленина появляется только при клике по линии, при этом пишет Ваш браузер не поддерживает плавающие фреймы! Попробовал ФФ, Оперу и Хром, результат тот же. Это связано с фреймами или что то не так делаю?

Относительно второго: g.co/maps/swggr
Дом на улице создан как многоугольник с <name>77</name>, как вывести этот номер сверху текстом, но не так чтоб он всегда был посредине дома, а чтоб я мог расположение текста настроить по двум координатам?

p.s. а вообще как можно любые тексты добавлять в KML?


Прикрепил файл с примером текста на линии, в GE работает, при подключении к плагину GE тоже работает, а вот на kml-samples.googlecode.com/svn/trunk/interactive/index.html и правда барахлит...
Надпись Ваш браузер не поддерживает плавающие фреймы! выводится так как GE плагин не поддерживает вывод в баллунах данных из фреймов. Сама программа Google Earth с такими данными в description уже работает.
Прикрепленный файл
Имя файла: kml.kml
Размер файла: 2617


По второму вопросу:
Отображение такого вида текста можно реализовать при помощи вывода накладываемого изображения. То есть у Вас должна быть картинка с нужным текстом и вы в kml файле описываете как ее позиционировать. Если нужен пример сделаю.

P.S. По идее так же можно реализовать и вывод текста с названием улицы
 
Зарегистрирован Зарегистрирован
 
Последнее редактирование: 01.05.2012 19:23 Редактировал proman.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#485
proman
Главный редактор
Постов: 241
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 2
По второму вопросу:
Отображение текста при помощи вывода накладываемого изображения.
В kml файле описываете как позиционировать картинку с нужным текстом.

kmz файл с примером
Прикрепленный файл
Имя файла: GroundOverlay.kmz
Размер файла: 1075
 
Зарегистрирован Зарегистрирован
 
Последнее редактирование: 02.05.2012 06:15 Редактировал proman.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#486
sieur
Читатель
Постов: 8
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 0
Спасибо, разобрался. Строка <gx:labelVisibility>1</gx:labelVisibility> раньше у меня не работала, потому что шапка у меня бедная была в KML-файле, только две строки. Прописал Вашу и все заработало.

Насколько понимаю, при подключении карты к веб-странице названия улиц работают только в режиме Земля, в режиме Карта или Спутник не работают, если ошибаюсь - исправьте. А если верно, тогда другая проблема. Нашел простой пример подключения режима Земля к сайту по ссылке developers.google.com/earth/documentation
Код:

<html>
<head>
   <title>Sample</title>
   <script src="http://www.google.com/jsapi?key=ABCDEFG"> </script>
   <script type="text/javascript">
      var ge;
      google.load("earth", "1");

      function init() {
         google.earth.createInstance('map3d', initCB, failureCB);
      }

      function initCB(instance) {
         ge = instance;
         ge.getWindow().setVisibility(true);
      }

      function failureCB(errorCode) {
      }

      google.setOnLoadCallback(init);
   </script>

</head>
<body>
   <div id="map3d" style="height: 400px; width: 600px;"></div>
</body>
</html>


Без ключа типа jsapi?key=ABCDEFG" для моего сайта земля никак не работает. Но когда перехожу на страницу для получения ключа, то пишет что для API v3 его уже не нужно и сгенерировать его там уже невозможно. Как быть?

Это относительно первого. Относительно второго насколько понял номера домов можно только через картинки, аналогично через <gx:labelVisibility>1</gx:labelVisibility> получается нельзя, верно?

К стати повесьте пожалуйста другой пример GroundOverlay в формате kml, а то я когда открываю код, то сплошные кракозябры, в какую кодировку не переключать...
 
Зарегистрирован Зарегистрирован
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#487
proman
Главный редактор
Постов: 241
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 2
sieur писал(а):

Без ключа типа jsapi?key=ABCDEFG" для моего сайта земля никак не работает. Но когда перехожу на страницу для получения ключа, то пишет что для API v3 его уже не нужно и сгенерировать его там уже невозможно. Как быть?

На счет этого я так сразу не скажу... Свой ключ получал несколько лет назад.
Имеет смысл разобраться в чем разница при подключении через разные API, возможно дело в этом?

sieur писал(а):

Это относительно первого. Относительно второго насколько понял номера домов можно только через картинки, аналогично через <gx:labelVisibility>1</gx:labelVisibility> получается нельзя, верно?

Да, свойство <gx:labelVisibility>1</gx:labelVisibility> работает только для полилиний LineString

sieur писал(а):

К стати повесьте пожалуйста другой пример GroundOverlay в формате kml, а то я когда открываю код, то сплошные кракозябры, в какую кодировку не переключать...


Файлы .kmz это архив формата zip внутри которого упакованы файлы которые открывает Google Earth.
Для того что бы посмотреть что внутри, измените расширение на zip и сразу будет видно что внутри.
 
Зарегистрирован Зарегистрирован
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#488
sieur
Читатель
Постов: 8
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 0
Понял, спасибо.
Еще вопрос: когда добавляю в гугл ирс накладываемое изображение, то оно по размерах растягивается на несколько улиц, потом каждое нужно вручную уменьшать. Можно ли где то в настройках проги или по крайней мере в свойствах каждой отдельной картинки задавать реальные размеры в пкс, чтобы не тягать за маркеры?
 
Зарегистрирован Зарегистрирован
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#489
proman
Главный редактор
Постов: 241
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 2
sieur писал(а):
Понял, спасибо.
Еще вопрос: когда добавляю в гугл ирс накладываемое изображение, то оно по размерах растягивается на несколько улиц, потом каждое нужно вручную уменьшать. Можно ли где то в настройках проги или по крайней мере в свойствах каждой отдельной картинки задавать реальные размеры в пкс, чтобы не тягать за маркеры?


Предлагаю на вскидку такой вариант решения.
1) создаем например в Фотошопе заготовку картинки с названием улицы (в дальнейшем имеем ввиду что размеры всех картинок будут равны)
2) создаем GroundOverlay ручками, тоесть подгоняем размеры картинки под требуемый размер оперирую значениями координат в <north> <south> <east> и <west>. После подгонки мы получим дельты координат, на которые будут отличаться данные для различных GroundOverlay
3) создаем например в Excel таблицу в которой базовыми будут имя картинки и координаты точек вставки
Далее в этой таблице при помощи формул расчитываем значения <north> <south> <east> и <west> для каждого GroundOverlay
4) Далее макросом создается итоговый kml файл.
5) На последнем этапе в kmz файл упаковываем в соответствующую папку требуемые картинки и полученный на четвертом этапе kml файл.

zip архив с примером и заготовками
Прикрепленный файл
Имя файла: GroundOverlay_street_test.zip
Размер файла: 38105


P.S. Удовлетворите мое любопытство, расскажите что за слой Вы хотите сделать?
 
Зарегистрирован Зарегистрирован
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
#491
sieur
Читатель
Постов: 8
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Как указать названия улиц и номера домов через KML 5 г., 4 мес. назад Репутация: 0
Роман еще раз спасибо, с номерами домов разобрался уже по своему. В знак благодарности могу подсказать как сделать чтоб посетители попадали сразу на ваш сайт даже если введут в адресной строке kirov2kml.ru без www. Нужно дописать в файл .htaccess следующие строки:
Код:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^kirov2kml.ru [NC]
RewriteRule (.*) http://www.kirov2kml.ru/ [R=301,L]


Одновременно еще два вопросы:
1. Что и где в файлах установленной программы Google Earth можно дописать чтоб в меню Вид > Размер окна просмотра > Вывод на печать кроме существующих 4-х вариантов альбомного формата был еще мой пользовательский? (если вам известно)
2. Можно ли как то опять же в файлах программы что нибудь поправить чтоб при работе в ней после внесения изменений в kmz-файл пути к накладываемым изображениям всегда были относительными типа img/name.gif а не прописывались программой полностью типа D:/Folder/gorod.kmz/img/name.gif ?

proman писал(а):
P.S. Удовлетворите мое любопытство, расскажите что за слой Вы хотите сделать?
Да так, ничего особенного для публики в принципе нет чтобы показывать, это даже не город.
 
Зарегистрирован Зарегистрирован
 
Последнее редактирование: 09.05.2012 19:45 Редактировал .
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться
Вверх