目前正在努力使用PHP并从中创建KML。我正在使用last.fm API(geoGetevents)从'location'抓取事件(例如,用户搜索曼彻斯特)然后(使用KML - 因为我觉得它比JS更舒服)在地图上绘制这些事件。
我发现从我的Feed链接到Google地图时,我收到了无效的KML / KMZ错误。话虽如此,我知道为什么......一切都包含在一个文件中 - 包括PHP生成的KML。
因此,使用GET变量,网址为http://example.net/dmp/search.php?city=bristol
谷歌地图在'?'之后忽略了网址的其余部分 - 有什么办法可以将动态生成的KML发送到谷歌地图吗?也许创建一个单独的KML文件?
<kml xmlns="http://www.opengis.net/kml/2.2"> <!-- Sets KML header -->
<Folder>
<name>Gigs</name>
<Placemark><name>As I Lay Dying</name><description> etc
这是由PHP创建的当前KML。
希望你能提供帮助,并提前感谢你
答案 0 :(得分:0)
我想我有你的回答你是否已将链接放在描述中的Cdata中 这将允许气泡出现在点击图标上方,其中包含html
很好的例子是marinetraffic.com
发送动态创建的kml。
将此添加到Apache mime.types中 application / vnd.google-earth.kml + xml kml
在页面顶部输出文件放这个 标题('Content-type:application / vnd.google-earth.kml + xml');
亚达亚达
ps你可以在http://code.google.com/apis/kml/documentation/kml_tut.html
找到很多有关cdata的信息然后你需要创建一个网络链接文件,它是一个kml文件,告诉google maps ware查找你的服务器
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Random Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>A simple server-side script that generates a new random
placemark on each call</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<refreshInterval>600.0</refreshInterval>
<refreshMode>onInterval</refreshMode>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>
我添加了刷新间隔,因为这会使其自动更新
希望这有助于破解,因为你知道有更多的PHP比我想你看看我的问题!哈哈乔普这有帮助
答案 1 :(得分:0)
您必须注意的第一个问题是,为了避免将网站用作动态界面,谷歌限制了刷新KML的频率(您可能已经更改了它,但谷歌缓存了它)。谷歌刷新缓存之前通常会超过10分钟。
因此,最好的办法是更改您的KML名称,googlemaps嵌入链接以及刷新嵌入式地图。
注意:您可以编写PHP代码来吐出KML并直接从googlemaps网站调用PHP文件。