PHP在地图上为多个地标动态创建KML

时间:2010-11-28 12:59:48

标签: php kml

目前正在努力使用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。

希望你能提供帮助,并提前感谢你

2 个答案:

答案 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文件,以便与googlemaps最简单的界面 - 网站一起使用。

click here for example

您必须注意的第一个问题是,为了避免将网站用作动态界面,谷歌限制了刷新KML的频率(您可能已经更改了它,但谷歌缓存了它)。谷歌刷新缓存之前通常会超过10分钟。

因此,最好的办法是更改您的KML名称,googlemaps嵌入链接以及刷新嵌入式地图。

注意:您可以编写PHP代码来吐出KML并直接从googlemaps网站调用PHP文件。