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

Posted

技术标签:

【中文标题】无法从 Google Maps Javascript API 的自动完成中选择地址【英文标题】:Cannot select address from autocomplete on Google Maps Javascript API 【发布时间】:2015-11-03 10:03:53 【问题描述】:

设置是 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 控制台上没有显示错误。

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

【问题讨论】:

【参考方案1】:

在我的一个项目中,我一直在努力解决 iPhone 上的相同问题,经过数小时的调查,发现该问题是由 fastclick lib 引起的。

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 只有divspanFastClick 假定它不可点击并调用preventDefault,为了克服这个问题,我将needsclick 类添加到所有.pac-* 元素

【讨论】:

请参阅***.com/a/20056485/1823675,了解如何将类添加到.pac-* 元素。

以上是关于无法从 Google Maps Javascript API 的自动完成中选择地址的主要内容,如果未能解决你的问题,请参考以下文章

Android - 上下文 - Google Maps V2 - 类型不匹配:无法从 Object 转换为 WindowManager

无法实例化 android.gms.maps.MapFragment

无法通过 gradle 导入 com.google.maps.android:android-maps-utils

com.google.android.gms.maps.MapFragment:无法解析符号“地图”

从 Google Maps API 中的单个 LatLong 确定缩放级别

import com.google.android.maps.geopoint 无法解析