Карта центра между двумя точками WinRT

я пытаюсь центрировать карту телефона Windows между двумя точками, регулируя центр и масштабирование, чтобы сделать эти точки видимыми одновременно.

В Android и IOS есть функции для этого, например, как это сделать в Android:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(myPos.getPosition());
builder.include(defaultPos.getPosition());
mapa.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 50));

Как я могу сделать то же самое в WinRT?

Заранее спасибо.


person Nanoc    schedule 21.08.2014    source источник


Ответы (2)


Если вы ориентируетесь на Windows Phone 8.1 вместо WinRT (Windows 8/8.1), вы можете сделать следующее:

var geoboundingBox = new Windows.Devices.Geolocation.GeoboundingBox(
new BasicGeoposition() { Latitude = 40, Longitude = -90 }, 
new BasicGeoposition() { Latitude = 45, Longitude = -100 });
map.TrySetViewAsync(new Geopoint(geoboundingBox.Center));
person rbrundritt    schedule 21.08.2014
comment
Мне нужно сделать это в универсальном приложении, как на телефоне, так и на ПК. - person Nanoc; 21.08.2014
comment
Ok. Во-первых, для WP/WinRT нет универсального элемента управления картой. Однако можно использовать карты Bing в универсальных приложениях. Я написал сообщение в блоге о том, как это сделать, здесь: blogs.msdn.com/b/bingdevcenter/archive/2014/06/24/ - person rbrundritt; 21.08.2014
comment
Вам понадобятся обе части кода, которые я предоставил, чтобы делать то, что вы хотите сделать в универсальном приложении. - person rbrundritt; 21.08.2014
comment
Я знаю, это выглядит очень просто, похоже на Android или ios, но я не могу найти классы, необходимые для телефона (Windows.UI.Xaml.Controls.Maps), я могу найти их только на ПК (Bing.Maps). - person Nanoc; 21.08.2014
comment
Убедитесь, что это универсальное приложение, которое вы создаете. Универсальные приложения предназначены для Windows Phone 8.1 и выше. Вы найдете пространство имен Windows.UI.Xaml.Controls.Maps только в приложении WP8.1. Если вы посмотрите на сообщение в блоге, которое я предоставил в предыдущем комментарии, оно покажет вам, как получить доступ к этому пространству имен в универсальном приложении, используя символы условной компиляции. - person rbrundritt; 21.08.2014
comment
Кроме того, вы можете переключать цель кода, используя раскрывающиеся списки в верхней части файла. Вероятно, установлено приложение Магазина Windows, переключите его на Windows Phone, и пространство имен должно появиться разрешенным. - person rbrundritt; 21.08.2014
comment
Работая на телефоне, обратите внимание, что его Geopoint, а не GeoPoint VS, не решит эту проблему. - person Nanoc; 21.08.2014
comment
Да, вы правы насчет Geopoint. Сила привычки верблюжьим регистром слов, когда я печатаю. - person rbrundritt; 21.08.2014

Для элемента управления Bing Maps WinRT это можно сделать двумя разными способами. Первый — создать LocationRect из двух точек. Это создаст ограничивающую рамку для ваших местоположений. Вы можете либо установить представление карты для этого LocationRect, используя метод SetView на карте, который будет центрироваться и масштабироваться до этих местоположений, либо вы можете использовать свойство Center этого LocationRect, чтобы установить представление карты таким образом, чтобы оно было сосредоточено на этих местах. два места, не приближая карту. Что-то вроде этого должно работать:

var bounds = new LocationRect(new Location(40,-90), new Location(45,-100));
map.SetView(bounds.Center);

Другой метод требует немного больше вычислений, но это хороший способ узнать, столкнетесь ли вы с другими элементами управления картой, для которых нет простого решения, такого как первое, о котором я упоминал. Этот метод состоит в вычислении координат центра между двумя местоположениями. У меня есть сообщение в блоге о том, как это сделать из очень старой версии Bing Maps, здесь: http://rbrundritt.wordpress.com/2008/10/14/calculating-the-midpoint-of-a-line-segment/ Логика может быть легко переносится на другие языки программирования.

Похоже, вы новичок в разработке с помощью Bing Maps в WinRT. Я рекомендую ознакомиться с моей бесплатной электронной книгой о том, как создавать интеллектуальные приложения для Магазина Windows. В нем подробно рассказывается о том, как создавать отличные приложения с помощью элемента управления Bing Maps. Вы можете скачать его здесь: http://rbrundritt.wordpress.com/my-book/< /а>

person rbrundritt    schedule 21.08.2014
comment
Это классы для управления картами Bing AJAX!, я вижу LocationRectangle для Silverlight, но я использую WinRT API, есть идеи? - person Nanoc; 21.08.2014
comment
LocationRect входит в состав Bing Maps SDK для WinRT: msdn.microsoft.com/en -us/library/hh846491.aspx - person rbrundritt; 21.08.2014
comment
Это пространство имен Bing.Maps (ПК), но на телефоне мне нужно использовать Windows.UI.Xaml.Controls.Maps, и я не вижу эти классы или что-то подобное. - person Nanoc; 21.08.2014