Googlemaps Javascript API KML图层 - 使用Open charge map api?

时间:2016-04-26 14:49:29

标签: javascript php api google-maps google-maps-api-3

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

我想要使用的API的网址似乎对我不起作用。 API可以在这里找到。 http://openchargemap.org/site/develop/api。它的电动汽车充电站将在地图上显示。

使用其他API和googles示例时,它们可以正常使用我的代码,使用我需要的代码无效。

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

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

我为网址尝试了不同的API变体,但这些变体都不起作用。以上示例适用于英国结果,最大值为500,输出设置为KML。

我注意到哪些可能有用的是,当此API以输出为KML进入浏览器时,它会在本地下载为无法识别的文件,其中开发人员页面上的Google示例和其他APIS直接下载为KML& #39; S。

使用Notepad ++打开时无法识别的文件是我想要的KML功能,可以保存为KML,可以通过这种方式上传和使用。这让我觉得Opencharge地图API可能有问题。但我是新手,所以任何帮助都表示赞赏!

谢谢你们!

KML layers Google Devlopers page

1 个答案:

答案 0 :(得分:0)

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

中查看可能的状态列表

所以,是的,API确实存在问题,而不是您的代码。您可以做的是在您的服务器上创建一个脚本,该脚本将加载KML,解析它,并创建一个有效的KML,然后您将其提供给API。所以,你需要:

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

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