1

因此,自 wp7 以来,我一直在使用 BingMapsTask 来显示用户在应用程序中选择的特定位置。但是从 wp8 开始,行为发生了变化!我们如何仍然使用 BingMapsTaks?

要运行此代码,请务必将您的区域设置更改为 BELGIUM - DUTCH。当你这样做时,代码将在 WP7 模拟器中显示正确的位置,但在 WP8 上它不会!(有关设置和结果,请参见图片) GitHub 上的演示应用程序

GeoCoordinate location = new GeoCoordinate(51.40205, 4.46802);

BingMapsTask task = new BingMapsTask();
task.Center = location;
task.SearchTerm = location.ToString();
task.ZoomLevel = 9;
task.Show();

区域设置

好的

好结果

坏的

结果不好

4

3 回答 3

2

我想我已经看到了与 BingMapsDirectionTask 类似的东西:它仅在手机的区域设置设置为美国时才有效。解决方案是在启动任务之前设置当前线程的文化:

            BingMapsDirectionsTask Direction = new BingMapsDirectionsTask();
            LabeledMapLocation start = new LabeledMapLocation(...);
            LabeledMapLocation End = new LabeledMapLocation(...);
            Direction.Start = start;
            Direction.End = End;

            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            Direction.Show();

(有关此问题的更多信息,例如来自 MSDN 论坛。)

不幸的是,这似乎不适用于 BingMapsTask。问题在于 SearchTerm:如果删除它,地图似乎正确居中,但不显示图钉。

你知道所选坐标的地址吗?如果这样做,您可以将 SearchTerm 更改为该地址,它应该可以工作。

例如,这个应该显示正确的位置:

        GeoCoordinate location = new GeoCoordinate(51.40205, 4.46802);

        BingMapsTask task = new BingMapsTask();
        task.Center = location;
        task.SearchTerm = "Noordeind 51, 2920 Kalmthout, Belgia";
        task.ZoomLevel = 9;
        task.Show();
于 2013-10-21T12:18:35.317 回答
0

如果问题是 Windows Phone 8,我建议改用 MapsTask,因为它在 WP8 中是首选!

此外,而不是ToString()尝试而不是ToString(CultureInfo.InvarianCulture)

于 2013-10-20T17:14:57.773 回答
0

对于 WP7,使用 BingMapsTask,对于 WP8,使用 MapsTask。

于 2013-10-20T17:15:35.613 回答