嘿伙计们,我正在尝试在我自己的基于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可能有问题。但我是新手,所以任何帮助都表示赞赏!
谢谢你们!
答案 0 :(得分:0)
KmlLayer
有getStatus()
方法,在您的情况下返回FETCH_ERROR
。这意味着google api无法为您下载KML。他们使用自己的服务器连接到Opencharge api并下载KML,因此很难确定原因是什么。但即使您尝试自行下载KML文件,上传并从服务器加载,也会出现INVALID_DOCUMENT
错误,这意味着该文件无效KML,或者谷歌地图API无法解析它。您可以在google maps js api docs。
所以,是的,API确实存在问题,而不是您的代码。您可以做的是在您的服务器上创建一个脚本,该脚本将加载KML,解析它,并创建一个有效的KML,然后您将其提供给API。所以,你需要:
加载脚本的url而不是原始API,例如:
var kmlLayer = new google.maps.KmlLayer({
url: 'http://yourserver/yourscript&optionalparameters',
suppressInfoWindows: true,
map: map
});