Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 6

Карта регионов (информационное приложение о стране)

24.12.2013, 14:23. Показов 2336. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Есть такая проблема, что мне нужно сделать информационное приложение о стране, и там должна быть инфа по отдельным регионам. Каждый регион делаю отдельным canvas, но они перекрывают один другого, и при нажатии яко-бы на левую область(смотрите вложение), тогда показывается инфа по правой из-за этого перекрытия.
Подскажите как это сделать. Нашел что надо с слоями играться, но не могу найти нормального объяснения как с ними работать.
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2013, 14:23
Ответы с готовыми решениями:

Карта регионов (какими методами можно воссоздать?)
Доброго времени суток, есть задача, создать карту России с регионами, при наведении на регион - область должна подсвечиваться, при нажатии...

Адаптивная карта с подсветкой регионов и всплывающими названиями
При помощи чего лучше реализовать данную карту, при наведении на маркерах подсвечивается область региона и всплывает название региона,...

Подойдёт ли Unity для моих задач? (не игра, а, скорее, информационное приложение)
Собираюсь разрабатывать приложение на мобильные платформы, которое брало бы информацию из базы данных на определённом сервере, после чего...

8
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
24.12.2013, 18:08
Здравствуйте и добро пожаловать!

Для этой цели вам вовсе необязательно использовать канвас, достаточно создавать полигоны по точкам и бросать эти полигоны в какой-нибудь Грид.

Гляньте прицепленный проект — там на примере карты Ирака (просто под рукой были готовые координаты) показано, что я имею в виду.
Координаты считываются из обычного XML-файла (у вас источник может быть другой), потом для каждого региона создается полигон из точек, к полигону цепляется пара обработчиков для реализации подсветки при наведении мыши и сам полигон бросается в грид.
Вложения
Тип файла: zip RegionMapExample.zip (43.4 Кб, 71 просмотров)
1
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 6
24.12.2013, 18:15  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Здравствуйте и добро пожаловать!

Для этой цели вам вовсе необязательно использовать канвас, достаточно создавать полигоны по точкам и бросать эти полигоны в какой-нибудь Грид.

Гляньте прицепленный проект — там на примере карты Ирака (просто под рукой были готовые координаты) показано, что я имею в виду.
Координаты считываются из обычного XML-файла (у вас источник может быть другой), потом для каждого региона создается полигон из точек, к полигону цепляется пара обработчиков для реализации подсветки при наведении мыши и сам полигон бросается в грид.
Спасибо, но я уже сам додумался до подобного: в Blend пером обвожу и все получается как надо.
Но все равно спасибо что откликнулись.
0
21 / 21 / 7
Регистрация: 22.02.2013
Сообщений: 237
28.12.2013, 20:17
Цитата Сообщение от kolorotur Посмотреть сообщение
Здравствуйте и добро пожаловать!

Для этой цели вам вовсе необязательно использовать канвас, достаточно создавать полигоны по точкам и бросать эти полигоны в какой-нибудь Грид.

Гляньте прицепленный проект — там на примере карты Ирака (просто под рукой были готовые координаты) показано, что я имею в виду.
Координаты считываются из обычного XML-файла (у вас источник может быть другой), потом для каждого региона создается полигон из точек, к полигону цепляется пара обработчиков для реализации подсветки при наведении мыши и сам полигон бросается в грид.
Ошибку выдаёт: "Вызов конструктора для типа "RegionMapExample.MainWindow", удовлетворяющего указанным ограничениям привязки, привел к выдаче исключения.": номер строки "3" и позиция в строке "9".
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
28.12.2013, 23:46
BORIS_HERE, а почему вы отвечаете вместо NotPing ?
0
21 / 21 / 7
Регистрация: 22.02.2013
Сообщений: 237
28.12.2013, 23:53
Меня заинтересовал проект, но он не запускается.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.12.2013, 00:05
BORIS_HERE, странно, я сейчас скачал прикрепленный к моему ответу архив, распаковал его, открыл проект в студии 2010, скомпилил, запустил и все нормально работает.

Там информация о регионах считывается из файла IraqMap.xml. Этот файл является частью проекта — убедитесь, что в его свойствах Copy to Output Directory установлено на Always. Как вариант, вручную скопируйте его в папку с экзешником.
В коде так же путь к файлу прописан просто-напросто как "IraqMap.xml", так что искать будет по текущей рабочей директории, которая на вашей системе при запуске приложения может быть не совпадает с директорией, откуда запускается экзешник. В этом случае можете изменить код (файл MainWindow.xaml.cs, строка 27), прописав полный путь к файлу.

Если ничего не поможет и программа все равно рушится, то гляньте свойство InnerException в возникающем исключении — там должна быть указана изначальная причина ошибки.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
29.12.2013, 00:41
Там из-за региональных настроек проблема. Для RU решается если заменить в файле IraqMap.Xml все точки в поинтах на запятые, либо изменив немного код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var culture = CultureInfo.CreateSpecificCulture( "en-us" );
foreach ( var region in xml.Root.Elements( "region" ) )
{
    var polygon = new Polygon {
        Stroke = Brushes.Black,
        StrokeThickness = 1,
        Fill = Brushes.LightGray
    };
 
    foreach ( var point in region.Elements( "point" ) )
    {
        polygon.Points.Add( new Point {
            X = double.Parse( point.Attribute( "x" ).Value, culture ),
            Y = double.Parse( point.Attribute( "y" ).Value, culture )
        } );
    }
 
    polygon.Cursor = Cursors.Hand;
    polygon.MouseEnter += ( o, e ) => { (o as Polygon).Fill = Brushes.Red; };
    polygon.MouseLeave += ( o, e ) => { (o as Polygon).Fill = Brushes.LightGray; };
 
    mainGrid.Children.Add( polygon );
}
1
21 / 21 / 7
Регистрация: 22.02.2013
Сообщений: 237
29.12.2013, 00:52
Помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.12.2013, 00:52
Помогаю со студенческими работами здесь

Приложение-карта
Требуется внедрить на сайт раздел, представляющий собой интерактивную карту населенного пункта. При наведении на определенную пиктограмму...

Информационное сообщение
Добрый день! Подскажите как вывести информационное сообщение на веб-форме, то есть мне надо к примеру что бы при не правильном вводе в...

Информационное окно
Как сделать, чтобы когда наводишь на элемент формы появлялась такое окно(смотреть фото в красной рамке)?

Информационное табло
Подскажите пожалуйста. Вот программа: Строка Мнемокод Комментарий 01 ;программа...

Показать информационное окно
Добавил карту на сайт, создал маркер, написал в информационное окно сообщение, хочу чтобы это сообщение выпадало сразу после захода на...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru