Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Карты в приложении, исрользование географических карт в WPF 
:(
    Опции темы
SKrivosein
Дата 27.7.2012, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



Добрый день форумчани.
Вопрос собственно такой, необходимо в приложенние (желательно WPF) встроить маштабируемую карту, на которой будут динамически в определенных географических местах, городах, создаватся иконки. По нажатию на иконки должно открываться плавающее подокно с дополнительными информациями.
Поиск по Google определенные результаты принес, но если кто-то такой велосипед (особенно красивый) видел-делал прошу поделится информацией или направленнием где искать.


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
SKrivosein
Дата 28.7.2012, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



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


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
SKrivosein
Дата 23.10.2012, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



Мой проект использующий карты Microsoft bing продвинулся вперед и уже появился кое-какой опыт работы с ними. По этому как и обещал: 
Цитата
С результатами и впечатлениями поделюсь позже в этом топике....

Так же, главные полезные для этой темы ссылки 
Bing Maps WPF Control
Bing Maps Silverlight Control

1. Карты имеют такие главные свойства как:
  a. Center - просто задаёт координаты по которым поставите цент карты.
  б. Zoom Level - степень увеличения.
  в. Heading - угол поворота карты от 0 градусов до 360 (север). Причем у Silverlight есть ещё и свойство Pitch которое определяет угол под которым смотрим на карту. К сожалению у WPF я его не нашел.
  г. AnimationLevel - три степени анимации при перерисовке карты. Особых различий не заметил. Сама по себе перерисовка достаточна быстрая, сравнимая с Google.
  д. Mode - три режима изображения карты, вот здесь начинаются минусы. Road - самый полезный с моей точки зрения режим, к сожалению названия городов не сильно резкие, что иногда по сравнению с Google мешает. А также названия только латинским шрифтом. Aerial - просто спутниковый, гоеграфический. AerialWithLabels - спутниковый с сеткой границ, дорог и городов, что с одной стороны улучшает орентировку по сравнению с Google. С другой, при определёной величине зума, раздражает. Оба последние режима сильно темные. Карты в низких режимах зума на полюсах выглядят идиотски, но это можно убрать программно. Хотя, справедливости ради, некоторые знакомые мне районы имеют больше подробностей и актуальней сфотографированы чем на картах Google. Что может быть чисто субективное впечатление.

2. Карты и сервисы теоретически позволяют находить адреса, достопримечательности, строить маршруты. Ответ с сервера приходит как XML документ. Докиментация с кодом прилагается на Using the REST and Spatial Data Services, где достаточно подробно всё описано. Причем полезно посмотреть соответствующие разделы Silverlight. При определённой тренировке разобрать документ не состовляет трудностей, хотя и требует дотаточно много кода. Ответ для Берлина например содержит 5 городов, 4 из которых в Америке, всё это надо разобрать и выбрать необходимое. На практике я использовал только поиск по адресу. Для Европы достаточно точные ответы, например мой дом в Чехии нашел абсолютно точно. Но адреса например в Харькове находит с значительными ошибками! Чисто для примера XML ответ для вопроса "харьков"
Код

<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">
  <Copyright>Copyright © 2012 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.</Copyright>
  <BrandLogoUri>http://dev.virtualearth.net/Branding/logo_powered_by.png</BrandLogoUri>
  <StatusCode>200</StatusCode>
  <StatusDescription>OK</StatusDescription>
  <AuthenticationResultCode>ValidCredentials</AuthenticationResultCode>
  <TraceId>51bfdf81b24943bf8781cdb3da3e6114|PRAM001260|02.00.82.300|PRAMSNVM001168, PRAMSNVM001172, PRAMSNVM001170</TraceId>
  <ResourceSets>
    <ResourceSet>
      <EstimatedTotal>1</EstimatedTotal>
      <Resources>
        <Location>
          <Name>Kharkiv, Ukraine</Name>
          <Point>
            <Latitude>49.988430023193359</Latitude>
            <Longitude>36.2257194519043</Longitude>
          </Point>
          <BoundingBox>
            <SouthLatitude>49.903533935546875</SouthLatitude>
            <WestLongitude>36.099521636962891</WestLongitude>
            <NorthLatitude>50.0745735168457</NorthLatitude>
            <EastLongitude>36.334510803222656</EastLongitude>
          </BoundingBox>
          <EntityType>PopulatedPlace</EntityType>
          <Address>
            <AdminDistrict>Kharkiv</AdminDistrict>
            <CountryRegion>Ukraine</CountryRegion>
            <FormattedAddress>Kharkiv, Ukraine</FormattedAddress>
            <Locality>Kharkiv</Locality>
          </Address>
          <Confidence>High</Confidence>
          <MatchCode>Good</MatchCode>
          <GeocodePoint>
            <Latitude>49.988430023193359</Latitude>
            <Longitude>36.2257194519043</Longitude>
            <CalculationMethod>Rooftop</CalculationMethod>
            <UsageType>Display</UsageType>
          </GeocodePoint>
        </Location>
      </Resources>
    </ResourceSet>
  </ResourceSets>
</Response>

Я бы сказал что это наибольшая слабость карт. Остаётся только надеться что с развитием Windows 8 и Windows Phone Microsoft улучшит эти вещи smile 

3. Самая приятная часть это работа с самим Bing Maps WPF Control. Пока не нашел к чему придратся. Всё как родное WPF, большое количество методов, ешё больше событий MapCore Members. Взаимодействие быстрое, достаточно точное. Как и везде в WPF надо боротся с желанием не насовать на карту лишнего. Например "Pushpin - канцелярскую кнопку" как это называет производитель, можно вставить стандартную, свою картинку, или... например User control
Код

<UserControl x:Class="Primer.PushpinToMap"
             ........
             d:DesignHeight="82" d:DesignWidth="44">
    <Grid MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave" Cursor="Hand">
        <StackPanel>
            <TextBlock Name="TextBlockNumber" Height="35" TextAlignment="Center" FontSize="32" FontWeight="Bold" Foreground="#FFBF2626" />
            <Image Stretch="Fill" Width="44" Height="47" Source="/...;component/ImagesResources/pushpin.png" />
        </StackPanel>
        <Border Name="BorderSPZ" Height="25" Width="90" Margin="22,-10,-79,60" BorderThickness="2" BorderBrush="#FF14083D" Background="#FFF7FF70" 
                  CornerRadius="6,6,6,0" Visibility="Collapsed">
            <TextBlock Name="TextBlockSPZ" Height="23" TextAlignment="Center" FontSize="15" FontWeight="Bold" 
                       Foreground="#FF14083D" />
        </Border>
    </Grid>
</UserControl>

который потом легко добавим на карту, заполним необходимыми данными текст блоки, повесим ещё одно событие.
Код

            MapLayer controlLayer = new MapLayer();

            PushpinToMap control = new PushpinToMap();
            control.TextBlockNumber.Text = number;
            control.TextBlockSPZ.Text = spz;

            PositionOrigin position = PositionOrigin.BottomCenter;
            controlLayer.AddChild(control, location, position);
            TirMap.Children.Add(controlLayer);

            controlLayer.MouseLeftButtonDown += new MouseButtonEventHandler(ControlLayer_MouseLeftButtonDown);

Всё работает, все события отзываются, можно повторить с разными данными несколько раз. И когда надо убрать. В обьщем самая приятная часть работы с картами  smile 

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

Это сообщение отредактировал(а) SKrivosein - 24.10.2012, 03:28


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
RoboTown
Дата 1.11.2012, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.10.2012
Где: Стратосфера

Репутация: нет
Всего: нет



Большое спасибо, раньше не знал о существовании такого компонента. Буду пользоваться.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.