【问题标题】:GoogleMapAPI:createMarkerIcon: Error reading imageGoogleMapAPI:createMarkerIcon:读取图像时出错
【发布时间】:2016-10-21 13:36:02
【问题描述】:
我在尝试在我的网站上加载地图时收到错误 GoogleMapAPI:createMarkerIcon: Error reading image /path/to/my/image.php。这只发生在我的登台和实时系统上。在我的开发机器上一切正常。三个系统上的文件完全相同。
我找不到该问题的最终解决方案,但其他人也确实有它,因为其他板上有几个关于此问题的线程。
图片路径正确,文件可访问。
【问题讨论】:
标签:
php
apache
google-maps
google-maps-api-3
document-root
【解决方案1】:
我不知道是否还有人遇到这个问题。但是我在 GoogleMapAPI 的 createMarkerIcon() 方法上花了很长时间,因为它可以在我的开发机器上正常加载图像,但在我的登台和实时机器上却出现了 GoogleMapAPI:createMarkerIcon: Error reading image /path/to/image.png 消息而失败。
我知道这在几年前就已经是个问题了,目前还找不到任何标记为“已解决”的话题。所以我想,我会在这里与全世界分享我的见解。
对我来说,问题是 $_SERVER['DOCUMENT_ROOT'] 返回了错误的目录。如果您使用 virtual hosts 并配置了一些 aliases,则很可能是这种情况。只要您不通过别名调用网站,一切正常。但是,一旦您使用别名调用网站,$_SERVER 变量就无法反映正确的值。这不仅是'DOCUMENT_ROOT' 索引的情况。
但是,Maps API 仅使用此变量来确定图标图像的绝对位置。如果您知道要查找的内容,则解决方法非常简单。首先仔细检查$_SERVER['DOCUMENT_ROOT'] 返回正确的路径。如果它确实确实返回了正确的路径并且您仍然收到错误,那么您需要继续寻找解决方案。如果没有,您可以轻松地为 API 的 createMarkerIcon() 方法编写覆盖方法。只需将 $_SERVER['DOCUMENT_ROOT'] 变量替换为您的真实文档根。要检索它,请在 index.php 中使用以下行来创建具有正确路径的常量。最后的斜线是可选的,但我建议您添加它。
define('DOCROOT',realpath(dirname(__FILE__).'/'));
应该可以。为我解决了错误。只是不要对 API 本身进行修改以保持可更新性。