【问题标题】:How do I trigger Google Maps API methods using gMap jQuery plugin?如何使用 gMap jQuery 插件触发 Google Maps API 方法?
【发布时间】:2011-04-06 06:14:57
【问题描述】:

我正在使用 jQuery 的 gMap 插件,需要在地图初始化后调用原生 Google Map API 的“resize”方法。谁能告诉我如何实现这一目标?

按照gMap plugin documentation

,我正在以这种方式初始化我的地图元素
var defaults = {
    latitude: 0,
    longitude: 0,
    zoom: 2,
    scrollwheel: false
};
$('#myMap').gMap(defaults);

显示地图的选项卡最初是隐藏的,我知道这会导致 Google Maps API 的绘制问题(以及随后的我们许多网络开发人员)。

我尝试在每次显示选项卡时设置地图初始化,但这会导致闪烁并且还会导致地图显示重置为其默认状态——不幸的是,这两种状态都不可接受。

因此,通过 gMaps 触发 API 的“resize”方法;在显示选项卡的内容时,我尝试了以下方法,但它们都不起作用:

$('#myMap').resize();

$('#myMap').gMap(resize);

google.maps.event.trigger(myMap, 'resize');

$(window).resize();

我曾尝试向gMap Twitter account寻求帮助,但似乎已被放弃。

我真的很感激一个比我更好的大脑来解释我在使用 jQuery 的 gMap 插件时如何调用 GMap 方法。

【问题讨论】:

  • 我可能会鼓励您在此处自己处理与 Google Maps API 的交互,或查找其他插件。您使用的插件引用了已弃用的 v2 地图库,为了真正从函数中获取地图对象,您需要修改插件源以存储对 $gMap 对象的引用——也许在关联的 jQuery 数据存储——以便您以后可以再次找到它。
  • 我怀疑我可能需要以某种方式从插件中破解对 GMap 对象的访问权限,或者在插件旁边运行本机 API 实例/引用以重新获得对某些 API 方法的访问权限。烦人。

标签: javascript jquery google-maps


【解决方案1】:

v3 的 gMap 可在此处获得: http://www.smashinglabs.pl/gmap

【讨论】:

  • 很高兴看到正在开发的新版本,fridek。感谢更新;将考虑在我的下一个 GMaps 项目中使用 v3。
【解决方案2】:

gMap 插件似乎使用了 API 的 v2。所以调用 google.maps.event.trigger 是行不通的。

试试 checkResize:http://code.google.com/apis/maps/documentation/javascript/v2/reference.html

否则,我强烈建议不要打扰任何包装库。它们没有提供太多好处,正如您所见 - 它们使访问 Maps API 的重要功能变得困难。

【讨论】:

    【解决方案3】:

    好的,我想我会切换到本地 Google Maps API 的 v3 并从那里继续。

    在 gMaps 防御中,虽然它没有添加功能,但它确实简化了地图的设置和添加标记。这就是为什么它首先引起了我的兴趣。

    感谢您的反馈。

    【讨论】:

    • 我现在已经使用原生 GMaps v3 API 解决了这个问题。我正在触发我的地图对象的 resize() 方法作为我的选项卡切换功能的一部分,它按我想要的方式工作(即有状态,无闪烁)。
    猜你喜欢
    • 2023-03-07
    • 2011-04-10
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2018-02-19
    • 2012-04-09
    相关资源
    最近更新 更多