无法将Google Maps API URL与UWP自适应切片模板一起使用

时间:2016-01-01 15:22:26

标签: c# xml google-maps uwp live-tile

我有一个UWP,其中我正在编写一个可以跟踪设备位置的应用程序,我最近一直在尝试使用Google的静态地图API将地图图像作为我的应用程序实时图块。我们的想法是,实时图块会定期更新显示设备当前位置的地图。我有以下代码:

private void UpdateMainLiveTileWithImage(Geopoint point, string city)
{
    string ImageUrl = "http://maps.googleapis.com/maps/api/staticmap?maptype=satellite&center=0,0&zoom=14&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw";

    string tileXmlString = "<tile>"
        + "<visual>"
        + "<binding template='TileSmall'>"
        + "<image src='" + ImageUrl + "'  placement='background'/>"
        + "</binding>"
        + "<binding template='TileMedium'>"
        + "<image src='" + ImageUrl + "'  placement='background'/>"
        + "</binding>"
        + "<binding template='TileWide'>"
        + "<image src='" + ImageUrl + "'  placement='background'/>"
        + "</binding>"
        + "<binding template='TileLarge'>"
        + "<image src='" + ImageUrl + "'  placement='background'/>"
        + "</binding>"
        + "</visual>"
        + "</tile>";

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(tileXmlString);
    TileNotification notifyTile = new TileNotification(xmlDoc);
    TileUpdateManager.CreateTileUpdaterForApplication().Update(notifyTile);
}

在线xmlDoc.LoadXml(tileXmlString)我收到错误:

  

Trace.exe中出现“System.Exception”类型的异常,但未在用户代码中处理   附加信息:来自HRESULT的异常:0xC00CE50D

我可以使用来自https://www.google.co.uk/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png等网址的任何其他图片。据我所知,我已经满足了msdn website中列出的所有条件,而且根据我的理解,尝试加载大图像不会导致异常,只会跳过磁贴更新。

我尝试在网址中使用各种位置和尺寸,现在已经停留在坐标0,0上。此URL应该可以工作,因为它在浏览器中加载图像,msdn网站说PHP查询是检索图像的有效方法。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

此处的问题是图片网址中的&字符,您可以使用&amp;代替&来解决此问题。因为tile有效负载是XML文档而&是XML中的预定义实体引用,所以我们需要使用&amp;来逃避它。以下是有效的磁贴有效负载:

<tile>
  <visual>
    <binding template='TileSmall'>
      <image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&amp;zoom=12&amp;size=200x200&amp;key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
    </binding>
    <binding template='TileMedium'>
      <image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&amp;zoom=12&amp;size=200x200&amp;key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
    </binding>
    <binding template='TileWide'>
      <image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&amp;zoom=12&amp;size=200x200&amp;key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
    </binding>
    <binding template='TileLarge'>
      <image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&amp;zoom=12&amp;size=200x200&amp;key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
    </binding>
  </visual>
</tile>