【问题标题】:Google Maps Tutorial for PHP/MySQL not working correctlyPHP/MySQL 的 Google 地图教程无法正常工作
【发布时间】:2013-01-11 18:20:17
【问题描述】:

在本 Google 教程中; https://developers.google.com/maps/articles/phpsqlajax_v3 在“加载 XML 文件”部分中谈到了一个名为“downloadUrl”的函数。它说“url 指定 XML 文件或生成文件的 PHP 脚本的路径,具体取决于您是否希望在数据库更改时动态更新 XML。通常最简单的方法是将其与HTML,以便您可以通过文件名来引用它。” 问题是,如果我使用将 php url 放入函数中它不起作用。如果我直接链接到它的 xml 文件。例如,此调用不会在地图上放置标记。

downloadUrl('SCOTAxml.php?lat=39.4&lng=-94.6&dist=100', function(data) { ...

但是这个调用确实有效。

downloadUrl("testxml.xml", function(data) { ...

我使用 SCOTAxml.php 程序完全按照教程中的操作创建 xml。为了测试downloadUrl函数,我只是将它复制到testxml.xml后缀。

如果您还没有猜到,我的问题是,为什么不能按照教程所说的方式正常工作?

想法?要检查的东西?解决方案?

在此先感谢所有帮助解决这些简单问题的伟大人物。

【问题讨论】:

  • 你在这样做吗:header("Content-type: text/xml");?您是否进行了“检查 XML 输出是否有效”?结果如何?
  • 确实创建了 XML 文件。如果我将其复制并放入它自己的 test.xml 文件中并将一行代码更改为; downloadUrl("testxml.xml", function(data) { ...然后是的,它可以工作。我不得不删除“header(...”代码,因为它会导致程序出错。还有另一种设置方法吗?有那么重要吗?
  • 如果您需要浏览器将其视为 XML,这一点很重要。它导致了什么错误?这需要在任何数据发送到输出之前完成,否则会报错。

标签: google-maps-api-3


【解决方案1】:

我下载了教程,但由于地图图标而无法正确加载。他们的链接已经失效。您需要下载自己的图标。地图中使用的图标可以从Visual Case获取,点击保存即可。

var customIcons = {
      restaurant: {
        icon: 'icons/restaurant.png',
        shadow: 'icons/restaurant_shadow.png'
      },
      bar: {
        icon: 'icons/bar.png',
        shadow: 'icons/bar_shadow.png'
      }
    };

根据评论检查,您正在从 SCOTAxml.php 生成有效的 XML。

编辑

这是在浏览器中显示的教程生成的XML文件。

<markers>
<marker name="Frankie Johnnie & Luigo Too" address="939 W El Camino Real, Mountain View, CA" lat="37.386337" lng="-122.085823" type="bar"/>
<marker name="Amici's East Coast Pizzeria" address="790 Castro St, Mountain View, CA" lat="37.387138" lng="-122.083237" type="restaurant"/>
</markers>

我注意到您正在传递phpsqlajax_genxml.php 中不需要的参数(纬度、经度和距离)。这将向我表明您正在将教程 Creating Store Locator 与您上面指出的教程混合使用。

编辑 2

要从 PHP 文件输出 XML 内容,必须设置 content-type 标头。这是为了让浏览器知道 PHP 文件的输出内容是 XML,而不是默认的 content-type header (text/html)。

//Set content-type header for XML 
header("Content-type: text/xml");

编辑 3 visual-case 上的图标页面已移至此处:http://www.lass.it/Web/viewer.aspx?id=4

【讨论】:

  • 是的,我修改了教程以使用我自己的数据,但我使用了相同的(大部分)变量名称。 “距离”变量实际上是在 MySQL 查询中创建的。
  • 您的 XML 是否像我的编辑一样显示在浏览器中。当您将距离作为 MySQL 查询的参数传递时,我建议您查看 Store Locator 示例。
  • 我已经建立了一个在线示例: bsaroundtable.org/SCOTAmap.php,如果你运行它,你可以准确地看到 xml 产生了什么,它将显示在一个对话框中。我想我一定只是在某个地方有一个小的语法错误。我只是没看到。我将这些参数传递给 XML,这样我就可以从纬度和经度的距离中拉出我也传递它。
  • SCOTAmap 生成的 XML 格式不正确。它不能在浏览器中查看,除非通过查看源。如果你用你的代码给我发电子邮件(见个人资料),我会看看它
  • 我很高兴向您展示我的代码,但我也不知道该怎么做。这个网站上很新,所以我还不知道程序。我的直接电子邮件是 gmail dot com 的 kcscouter。如果您愿意将您的电子邮件发送给我,我们可以将其离线。但是没有其他人从中学习,不是吗?嗯!
猜你喜欢
  • 1970-01-01
  • 2012-04-23
  • 2013-04-07
  • 1970-01-01
  • 2022-01-09
  • 2017-12-20
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
相关资源
最近更新 更多