基本信息和错误...
我正在尝试使用Google Maps API v3,Phonegap 2.9.0和Xcode 4.6.3创建一个应用程序,该应用程序获取用户的当前位置,然后向他们返回一组最接近他们的位置的列表(使用Fusion Tables)。这一切都可以在我的桌面上的任何浏览器中使用,但是一旦“移植”到Phonegap,我将收到一个错误消息。
我收到的错误是:
ReferenceError: Can't find variable: google in (/somepath/)
当我在Xcode的iPhone模拟器中运行该应用程序时。我尝试过的
我已经阅读了无数有关此问题的文档,并尝试了大多数建议的修复程序。我尝试将我调用的API网址列入白名单(尽管我觉得这可能是我的问题,请参见下图)。或者也许是我的代码(另请参见下文)。
因此,基本上,我是否有明显缺失的事情或做错了什么?我已经对此进行了一段时间的研究,并且没有足够的资源来阅读。任何帮助将不胜感激。
我的密码
白名单/外部主机?
bigger image
我已经概述了将Google网域“列入白名单”的位置,但是出于某种原因,我对自己是否正确执行此操作有些警惕。我经常阅读有关where to find the ExternalHosts.plist文件的信息,但是在创建Phonegap目录时没有该文件夹结构。因此,我改为对上面的 .plist 文件以及 config.xml 文件进行了编辑。
编码
我的 index.html 页面非常基础。它包含常用的 header 内容(CSS文件包括,doctype等)。 body 有
<div id="map" class="google-map-canvas"></div>
<table class="table table-condensed table-striped">
<thead>
<tr>
<th>Name</th>
<th>Location</th>
<th>Distance</th>
</tr>
</thead>
<tbody id="sidebar-data">
<!--data gets put into here-->
</tbody>
</table>
页脚有这个...<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="cordova.js"></script>
<script src="js/map.js"></script>
最后,我的 map.js 文件(以及您在上面看到的所有其他文件)都位于我的Github存储库(https://github.com/jamez14/TrailFinder/blob/master/TrailFinder/www/js/map.js)中-很抱歉命名约定不正确(即在存储库中将我的Phonegap文件夹称为“TrailFinder”)。无论哪种方式,您都会看到我的 map.js 文件包含通常的“Phonegap地理位置信息”。我还尝试了有关添加Maps API调用(Google Maps API v3 not working in mobile browsers or PhoneGap)的建议,但没有成功。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
alert('onDeviceReady');
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
window.onerror = function(message, url, lineNumber) {
alert("Error: "+message+" in "+url+" at line "+lineNumber);
}
var map;
function onSuccess(position) {
//lots of stuff below this in the actual file
再次感谢您提供有关如何使我的Google Map显示在Xcode的iOS模拟器中的任何帮助/提示。 最佳答案
解决了!
当我包括Maps API和jQuery URL时,在我的 index.html 文件上,
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>
当我应该放...<script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>
和<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
如果您只是在本地运行应用程序,而不是通过https
运行,则使用http
作为协议(protocol)。否则,如果您通过https
提供应用程序,那么当然可以使用https
代替。希望这对以后的人有所帮助。所有这些工作都在我从事的名为TrailFinder的项目的Github上完成。只需查看Trailfinder / www中的Phonegap内容即可。