无法将 Google 地图 API URL 与 UWP 自适应图块模板一起使用
Can't use Google maps API URL with UWP adaptive tile templates
我有一个 UWP,我正在其中编写一个可以跟踪设备位置的应用程序,我最近一直在尝试使用 Google 的静态地图将地图图像作为我的应用程序动态图块API。这个想法是动态磁贴将定期更新显示设备当前位置的地图。我有以下代码:
private void UpdateMainLiveTileWithImage(Geopoint point, string city)
{
string ImageUrl = "http://maps.googleapis.com/maps/api/staticmap?maptype=satellite¢er=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) 我收到错误:
An exception of type 'System.Exception' occurred in Trace.exe but was not handled in user code
Additional information: Exception from HRESULT: 0xC00CE50D
我可以使用 URL 中的任何其他图像,例如 https://www.google.co.uk/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png. As far as I know I have met all of the conditions listed on the msdn website 并且根据我的理解,尝试加载太大的图像不会导致异常,磁贴更新只会被跳过。
我曾尝试在 URL 中使用各种位置和大小,现在坚持使用坐标 0,0。这个 URL 应该可以工作,因为它在浏览器中加载图像,并且 msdn 网站说 PHP 查询是检索图像的有效方法。
任何帮助将不胜感激。
这里的问题是图像 URL 中的 &
字符,您可以使用 &
而不是 &
来解决此问题。因为 tile payload 是一个 XML 文档,而 &
是 XML 中的 pre-defined 实体引用,所以我们需要使用 &
来转义它。以下是有效的图块有效负载:
<tile>
<visual>
<binding template='TileSmall'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
<binding template='TileMedium'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
<binding template='TileWide'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
<binding template='TileLarge'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
</visual>
</tile>
我有一个 UWP,我正在其中编写一个可以跟踪设备位置的应用程序,我最近一直在尝试使用 Google 的静态地图将地图图像作为我的应用程序动态图块API。这个想法是动态磁贴将定期更新显示设备当前位置的地图。我有以下代码:
private void UpdateMainLiveTileWithImage(Geopoint point, string city)
{
string ImageUrl = "http://maps.googleapis.com/maps/api/staticmap?maptype=satellite¢er=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) 我收到错误:
An exception of type 'System.Exception' occurred in Trace.exe but was not handled in user code Additional information: Exception from HRESULT: 0xC00CE50D
我可以使用 URL 中的任何其他图像,例如 https://www.google.co.uk/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png. As far as I know I have met all of the conditions listed on the msdn website 并且根据我的理解,尝试加载太大的图像不会导致异常,磁贴更新只会被跳过。
我曾尝试在 URL 中使用各种位置和大小,现在坚持使用坐标 0,0。这个 URL 应该可以工作,因为它在浏览器中加载图像,并且 msdn 网站说 PHP 查询是检索图像的有效方法。 任何帮助将不胜感激。
这里的问题是图像 URL 中的 &
字符,您可以使用 &
而不是 &
来解决此问题。因为 tile payload 是一个 XML 文档,而 &
是 XML 中的 pre-defined 实体引用,所以我们需要使用 &
来转义它。以下是有效的图块有效负载:
<tile>
<visual>
<binding template='TileSmall'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
<binding template='TileMedium'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
<binding template='TileWide'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
<binding template='TileLarge'>
<image src='https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=200x200&key=AIzaSyCX0fkuGP-bqLdtW67iHTU21Uiia_w5ULw' placement='background' />
</binding>
</visual>
</tile>