Как стать автором
Обновить

Комментарии 21

Ух, как подробно. Спасибо!
А почему все умалчивают про размещение Map, не на первой странице приложения?
Кстати пример на msdn, мне кажется, подробнее, он еще показывает как области обводить.
Потому что в рамках примера использования технологии, нет разницы на какой странице элемент управления находится.

Вполне соглашусь с тем, что MSDN — хороший источник примеров.
А вот разница то как раз есть. Вы попробуйте.
Я знаю, что разница есть.

Попытаюсь ответить ещё раз, но более развёрнуто. В рамках моего желания продемонстрировать именно технологическую возможность, использование второй страницы, потребует дополнительных объяснений и отвлечёт от основной темы.
А можете в кратце описать в чем разница? Я думаю рано или поздно разработчикам все равно прийдеться столкнуться с этой проблемой.
Я бы не называл это проблемой :).

Я не знаю, какую именно разницу имеет ввиду коллега. Но я расскажу, какую разницу я имею ввиду.

Сначала вводные.

1. Элемент управления Map — это интерфейс к веб-сервису карт bing, т.е. для отображения карт он открывает сетевое соединение и общается с веб-сервисом.
2. Концепция страниц в приложениях Windows Phone использует прадигму веб-страниц.

Т.о. если вы просто напишите приложение, которое будет иметь основной страницей пустую страницу со мышкой на вторую страницу, а второй странице, страницу с картой которая используется в примере и вся работа будет происходить на ней, разницы вы не увидите.

Если вы будете использовать варианты разметки pivot и panorama, вас может удивить, что там считается страницей и как загружается :) И могут возникнуть вопросы с инициализацией элементов.

При желании «взаимодействовать» с картой на другой странице со своей, с учётом вышеописанного, вам может понадобиться решить ряд задач, которые не связаны с технологией, но связаны с пониманием устройства приложения в Windows Phone и компонента Map.

Поэтому я в примере использую простое приложение с одной страницей — этого достаточно, чтобы понять возможности технологии. Если необходимо продвинутое взаимодействие с картами bing, ниже я давал ссылку на англоязычное руководство, где можно почитать подробнее про возможности использования карт.
Ок, спасибо! Пример опробовал и, вроде как, с простыми страницами проблем никаких нет. И благодарю за хороший пример.
Мы столкнулись немного с другой проблемой, так если в программе есть хотя бы один дополнительный поток кроме главного (в нашем случае это был сборщик данных с аудиоджека) объект карты не активировал поток, собирающий тайлы с сети (в случае если карты не на главной странице). Если дополнительных потоков нет, то все работает.
На мой взгляд, моё описание «разницы», как раз и соответсвует вашей ситуации.

Как я понимаю, вы ожидали, что на неактивной странице (недеюсь, вы не имеете ввиду PivotItem или PanoramaItem), расположенный на ней компонент Map, будет открывать соединение и активно общаться с сетью.

В моей логике, логично, что он этого не делает.
Конкретно я столкнулся с тем, что контрол на первой странице приложения работает нормально, если же размещать его на второй странице, то в эмуляторе отваливается масштабирование и позиционирование, т.е. карту можно перемещать из кода, но та пальцы она не реагирует, после развертывания на живом аппарате, на первой странице все так же ок, на второй масштабирование есть, позиционирования нет.
Я имею ввиду именно разные страницы, запихнуть карту в pivot или панораму это извращение над пользователем.
А можно мне Proof of Problem, т.е. демо-проект с описанием, что мне нужно сделать, чтобы было нехорошо. Если я удостоверюсь, что это ошибка/проблема, проэскалирую её разработчикам. По крайней мере попытаюсь это сделать.

Лучше выложить куда-нибудь архив с поектом, или по e-mail stas.pavlov@горячая_почта.ком
Дома накидаю, но в принципе ничего особого я не извращался. Просто приложение, 2 страницы, на одной карта и на другой. на первое еще ссылка на вторую страницу.
Можно было бы попросить просто сценарий, но не хотелось бы эффекта испорченного телефона.
Как же просто оказывается писать под WP. Спасибо за пример.
Что мне нравится в phone 7 это то, что приложения даже в самом простом своём варианте выглядят красиво. На андроиде стандартные контролы страшны чуть менее чем полностью.
Winphone-вские пины страшнее андроидных. Напишите как заменить на свои картинки.
Это стандартный Pushpin без текста и т.д. Т.к. это стандартный элементы управление, то на него можно «натянуть» любой шаблон. См. msdn.microsoft.com/en-us/gg266447
Спасибо за статью.
Небольшое, но важное замечание (хоть и не связанное с основной темой) — использовать new Thread(..).Start() очень-очень не рекомендуется. Посмотрите в сторону ThreadPool.QueueUserWorkItem или System.Threading.Tasks (TPL на wp7 недоступен «из коробки», но есть хороший порт с Mono)
Хорошее замечание. Дописал кусочек в статью.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий