无法从Google Maps Javascript API上的自动完成中选择地址

Cannot select address from autocomplete on Google Maps Javascript API

本文关键字:选择 地址 选择地 Google Maps Javascript API      更新时间:2023-09-26

设置是PhoneGap应用程序上的Google Maps Javascript API(v3),我设置了自动完成:

var that = this
this.autocomplete = new google.maps.places.Autocomplete(domNode)
this.listener = google.maps.event.addListener(
  this.autocomplete, 'place_changed', function (place) {
    var place = that.autocomplete.getPlace()
    ...
  }
})

这段代码适用于我的Android版本和浏览器。问题是当我在iOS下运行时。我在搜索框中键入一个字符串,会显示自动完成的结果,但单击其中一个只会关闭下拉列表,但结果不会填充到搜索框中。听众也不会开火。Javascript控制台上没有显示任何错误。

这都是谷歌的代码,所以我不知道如何调试。如有任何帮助,我们将不胜感激。谢谢

在我的一个项目中,我一直在iPhone上遇到同样的问题,经过数小时的调查,发现问题是由fastclick库引起的。

FastClick.prototype.onTouchEnd = function(event) {
    ...
    if (!this.needsClick(targetElement)) {
        event.preventDefault();
        this.sendClick(targetElement, event);
    }
    return false;
};
FastClick.prototype.needsClick = function(target) {
    'use strict';
    switch (target.nodeName.toLowerCase()) {
    // Don't send a synthetic click to disabled inputs (issue #62)
    case 'button':
    case 'select':
    case 'textarea':
        if (target.disabled) {
            return true;
        }
        break;
    case 'input':
        // File inputs need real clicks on iOS 6 due to a browser bug (issue #68)
        if ((this.deviceIsIOS && target.type === 'file') || target.disabled) {
            return true;
        }
        break;
    case 'label':
    case 'video':
        return true;
    }
    return (/'bneedsclick'b/).test(target.className);
};

因为.pac-container只有divspan,所以FastClick假设它是不可点击的,并调用preventDefault。为了解决这个问题,我将needsclick类添加到所有.pac-*元素