Windows Phone 7 - 放置的方向

时间:2014-01-15 18:08:16

标签: c# windows-phone-7 windows-phone-8 map

我正在寻找适用于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地图只是说无法找到路线

1 个答案:

答案 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