我正在寻找适用于WP7.1和WP8的解决方案。我正在搜索,我想我不能使用Driving directions for WP7,我是对的吗?我尝试使用MapsDirectionsTask,但即使我添加了对所需内容的引用仍然无法解析符号。所以对于WP7我猜是BingMapsDirectionsTask。我的应用程序运行但是当我尝试从我的位置找到路线时,我得到的错误是找不到路线。那可能是什么错?我试过多个地址,有或没有geocoordinate等等。我需要先将手机下载到手机吗?使用Bing地图方向有任何限制吗?有没有更好的方法让WP7中的方向工作?
编辑: 我尝试了来自MSD示例的代码,用于MapsDirectionsTask和BingMapsDirectionsTask。正如我写的那样,我无法使MapsDirectionsTask工作,因为VS无法找到参考资料(但我添加了文章中的文章)。
BingMapsDirectionsTask bingMapsDirectionsTask = new BingMapsDirectionsTask();
// here I tried different addresses and I tried to add geocoordinates to these addresses
LabeledMapLocation spaceNeedleLML = new LabeledMapLocation("Space Needle", null);
bingMapsDirectionsTask.End = spaceNeedleLML;
bingMapsDirectionsTask.Show();
Bing地图只是说无法找到路线
答案 0 :(得分:0)
当地图加载点击任何位置时,它会为您提供从当前位置到分割位置的指示。
试试这个,这需要从位置作为您当前的位置,到位置是您在地图上点击的地方,用此代码替换命名空间内的ur内容,这很好用
public partial class MainPage : PhoneApplicationPage
{
GeoCoordinateWatcher watcher;
// Constructor
public MainPage()
{
InitializeComponent();
LoadWatcher();
}
private void LoadWatcher()
{
if (watcher == null)
{
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 20;
watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
}
watcher.Start();
}
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
myMap.SetView(e.Position.Location, 10);
}
void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
switch (e.Status)
{
case GeoPositionStatus.Disabled:
statusTextBlock.Text = "location is not functioning on this device";
break;
case GeoPositionStatus.Initializing:
statusTextBlock.Text = "Initializing";
break;
case GeoPositionStatus.NoData:
statusTextBlock.Text = "location data is not available.";
break;
case GeoPositionStatus.Ready:
statusTextBlock.Text = "location data is available.";
break;
}
}
private void map1_Tap(object sender, GestureEventArgs e)
{
var position = e.GetPosition(myMap);
var geoCoordinate = new GeoCoordinate();
geoCoordinate = myMap.ViewportPointToLocation(position);
OpenDirectionTo(geoCoordinate);
}
private void OpenDirectionTo(GeoCoordinate locationY)
{
BingMapsDirectionsTask directionTask = new BingMapsDirectionsTask();
directionTask.End = new LabeledMapLocation("Your tapped location", locationY);
directionTask.Show();
}
}
参考这篇文章 Directions