Googlemaps Javascript API KML layer - Using Open charge map


Googlemaps Javascript API KML layer - Using Open charge map api?

嘿伙计们,我正在尝试在我自己的基于 PHP 的网站上为我的谷歌地图创建一个 KML 图层。

我想使用的 API 的 URL 似乎对我不起作用。可以在此处找到该 API。http://openchargemap.org/site/develop/api。它用于在地图上显示的电动汽车充电站。

当使用其他 API 和谷歌示例时,它们与我的代码一起工作,使用我需要的代码将不起作用。

var kmlLayer = new google.maps.KmlLayer({
    url: 'http://api.openchargemap.io/v2/poi/?output=kml&countrycode=GB&maxresults=500',
    suppressInfoWindows: true,
    map: map
});

上面的代码在我的初始化地图函数中。

我已经为网址尝试了 API 的不同变体,但它们都不起作用。上面的示例适用于输出设置为 KML 时最多为 500 的英国结果。

我注意到可能有用的是,当将此 API 输入浏览器并将输出为 KML 时,它会作为无法识别的文件在本地下载,而开发人员页面上的谷歌示例和其他 API 直接下载为 KML。

使用记事本++打开时无法识别的文件是我想要的KML功能,可以保存为可以这样上传和使用KML。这让我认为Opencharge地图API可能有问题。但我对此都是新手,所以任何帮助都值得赞赏!

谢谢大家!

KML 图层 Google Devlopers 页面

KmlLayergetStatus()方法,在您的情况下返回 FETCH_ERROR .这意味着谷歌 api 无法为您下载 KML。他们使用自己的服务器连接到Opencharge api并下载KML,因此很难确定原因是什么。但是,即使您尝试自己下载 KML 文件,上传并从服务器加载,您也会收到INVALID_DOCUMENT错误,这意味着该文件不是有效的 KML,或者谷歌地图 API 无法解析它。您可以在谷歌地图js api文档中查看可能的状态列表。

所以是的,API 肯定有问题,而不是你的代码。您可以做的是在服务器上创建一个脚本,该脚本将加载 KML,对其进行解析,然后创建一个有效的 KML,然后将其提供给 API。因此,您需要:

  1. 从服务器加载 URL 并将其解析为 XML(KML 采用 XML 表示法)。这是一个如何在 php 中执行此操作的示例。
  2. 从解析的 XML 创建您自己的有效 KML 文件,该文件仅包含位置坐标和任何必要的数据。
  3. 使脚本返回此新创建的 KML。
  4. 加载脚本的 url 而不是原始 API,例如:

    var kmlLayer = new google.maps.KmlLayer({ url: 'http://yourserver/yourscript&optionalparameters', suppressInfoWindows: true, map: map });