Места, места, места…Оболочка Bing Maps REST для WP7

Грэг Дункан

Места, места, местечки. Нет, мы не будем обсуждать настоящие поместья вместо разработки мобильных приложений. Я уверен, что вы тысячи раз уже слышали, что определение местоположения является «убийцей» разработки мобильных приложений. У нас с собой есть мощное устройство, куда бы мы ни отправлялись, и оно знает (или может знать с вашего разрешения) ваше местоположение и множество сервисов, располагающихся поблизости. Лишь сейчас мы видим мощь возможностей определения местоположений, вступающую в свои золотые дни. Картографирование и навигация ничто, по сравнению с тем, что нас ждет в будущем.

И чтобы вывести вас на начальный уровень, помочь сфокусироваться на логике приложения, а не на инфраструктуре, создан блог XAML Ninja, который продемонстрирует код, связанный с определением местоположения…

WP7Contrib – Оболочка сервиса Bing Maps REST

Вы используете или задумываетесь об использовании в приложении сервисов Bing Maps REST? Ищите причины проблем с производительностью в конечных точках WSDL? Не желаете ли воспользоваться подходом REST?

Итак, не откладывая в дальний ящик, теперь есть простой способ выполнить всё перечисленное…

Для тех эксцентричных людей, которые создают приложения для WP7 на основе местоположений, или которые задумываются об этом, мы рады объявить о первом выпуске API классов-оболочек Bing Maps Rest, которые недавно были добавлены к WP7Contrib (WP7C). К сожалению, чтобы разработать их потребовалось некоторое время, что обусловлено, главным образом, таким айсбергом, как API. Когда я впервые сформулировал эту идею, простой прототип доказал, что это возможно. Наряду с ее критикой, народу в Twitter’е обсуждавшему преимущества этих сервисов стало очень быстро понятно, что эту возможность люди будут использовать или хотели бы использовать. На основе некоторых отзывов, стало очевидно, что люди создавали собственные оболочки и вручную разрабатывали клиентские запросы, ответы и классы хранения данных. Это здорово, но мне бы хотелось иметь более общий и повторно применяемый набор компонентов, преимуществами которого могли бы воспользоваться все WP7-разработчики. И, как большинство разработчиков, мы хотим простой неинтрузивный механизм для включения различных возможностей, которые такие сервисы предоставляют вашим приложениям.

...

Итак, захватывающие новости, и мы уверены, что новые API оболочки Bing Maps REST помогут разработчикам безболезненно оживить приложения, основанные на определении местоположения. Поэтому нам будет очень приятно услышать о любых приложениях, которые вы, в конце концов, создадите, используя эти API. Кроме того, если у вас есть любые предложения или отзывы по реализации или дополнительным возможностям, которые вы сочли бы полезными, пожалуйста, свяжитесь со мной, чтобы мы могли всё обсудить. В следующей паре статей я подробно рассмотрю каждую службу в выделенных каталогах WP7C и дам ссылки на Олли, у которого есть более глубокие статьи, чтобы помочь дополнить блоги начального уровня.

WP7 Contrib – Оболочка сервиса Bing. Часть1 – Местоположение

Это первый пост, посвященный оболочкам, в котором, как я думаю, мы должны разбить лед с помощью наиболее часто используемых сервисов. Местоположение. Из всех сервисов это простейший для вызова, и, как можно ожидать, наиболее часто используемый. Когда вы объединяете этот сервис с местоположением устройства, основываясь на WP7C, то можете создавать приложения, знающие о местоположении и наносить его на карту и перемещать в реальном времени или помочь пользователям найти местоположение по адресу.

В примере использования сервиса определения местоположения мы рассмотрим оба этих сценария.

Итак, я собираюсь сразу прыгнуть вперед, предположив, что или вы уже взглянули на пример в папке Spikes из WP7 Contrib (WP7C), или у вас есть опыт использования Rest API, которые обеспечивает конечная точка Bing Maps. Если это не так, то я предлагаю открыть этот пример и взглянуть на модель Location View Model, который является прямым путем к цели, иначе придется повернуть назад…

clip_image002

clip_image004

Итак, давайте взглянем на приведенный пример. Сначала несколько замечаний по запуску приложений BingMap (по крайней мере, вещь, которую я должен сделать – так это запустить его на собственной системе).

Скачайте исходник WP7Contrib, https://wp7contrib.codeplex.com/SourceControl/changeset/view/67768# (щелкните на кнопке загрузить справа… заметьте, что там должна быть более новая версия … я хотел сказать, самая последняя).

Если у вас еще не установлены, установите Reactive Extensions (Rx) из каталога Launch решения BingMaps.sln

clip_image006

Когда вы запустите решение, то увидите, что с разделом References не всё в порядке. К счастью есть NuGet, чтобы сохранить день работы.

clip_image008

Используя NuGet (у вас ведь ЕСТЬ установленный NuGet, правда?), получите пакет WP7Contrib.All. Это должно исправить ссылки за вас, обеспечить получение всех пакетов WP7Contrib и их зависимостей.

clip_image010

Клянусь, NuGet действительно «Чародей загрузок». В любом случае, как только этот пакет будет загружен, вы будете просто счастливы со ссылками.

clip_image012

Наконец я должен отредактировать app.xaml и удалить двойные входы (помните, что это рабочий исходный код, и когда вы получите его, можете не делать этого…)

clip_image014

После чего проект должен пойти и вы можете начать играть с ним, глядя как работает оболочка т. п.

Если у вас установлены инструменты для разработки Mango, вы также можете использовать новый редактор местоположений эмулятора...

clip_image016

clip_image018

Нажмите кнопку поиска (на телефоне кнопка с увеличительным стеклом). Затем разрешите эмулятору использовать ваше местоположение и вернуть его приложению.

clip_image020

clip_image022

Если раздумываете о том, как использовать местоположения в приложениях WP7, и хотели бы сфокусироваться на разработке своего приложения, а не на том, как связаться и использовать Bing Maps, эта сборка может оказаться лучшим выбором. И пока вы работаете с ней, я уверен, вы захотите познакомиться с другими замечательными штучками проекта WP7Contrib... clip_image024.