GoogleMapAPI:createMarkerIcon:读取图像错误


GoogleMapAPI:createMarkerIcon: Error reading image

当试图在我的网站上加载地图时,我得到错误GoogleMapAPI:createMarkerIcon: Error reading image /path/to/my/image.php。这只发生在我的舞台和现场系统上。在我的开发机器上一切正常。这些文件在所有三个系统上完全相同。

我找不到一个明确的修复问题,但其他人确实有它,因为在其他板上有几个关于这个问题的线程。

图片路径正确,文件可访问

我不知道是否有人仍然有这个问题。但是我花了相当长的时间在GoogleMapAPI的 createMarkerIcon()方法上,因为它可以在我的开发机器上加载图像,但是在我的staging和live机器上失败了GoogleMapAPI:createMarkerIcon: Error reading image /path/to/image.png消息。

我知道这是几年前的一个问题,找不到任何标记为"已解决"的线程。所以我想,我应该在这里与世界分享我的见解。

对我来说,问题是,$_SERVER['DOCUMENT_ROOT']返回了一个错误的目录。如果您正在使用虚拟主机并配置了一些别名,则很可能出现这种情况。只要你不通过别名调用网站,一切都很好。但是,当您使用别名调用网站时,$_SERVER变量无法反映正确的值。这也不仅仅是'DOCUMENT_ROOT'索引的情况。

然而,Maps API只使用这个变量来确定图标图像的绝对位置。如果您知道自己在寻找什么,那么解决方法非常简单。首先仔细检查$_SERVER['DOCUMENT_ROOT']是否返回正确的路径。如果确实返回正确的路径,而仍然得到错误,则需要继续寻找解决方案。如果没有,您可以轻松地为API的createMarkerIcon()方法编写一个覆盖方法。只需将$_SERVER['DOCUMENT_ROOT']变量替换为实际的文档根。要检索它,请在index.php中使用以下行创建具有正确路径的常量。最后的斜杠是可选的,但我建议您添加它。
define('DOCROOT',realpath(dirname(__FILE__).'/'));

应该可以了。为我解决了错误。只是不要为了维护可更新性而修改API本身。