javascript - 谷歌地图 - 定义边界和信息窗口的事件操作区域

标签 javascript jquery google-maps google-maps-api-3

Google Maps JavaScript API V3 中是否有一种方法可以在所有有效的边界监听器内定义一个区域?

我不知道如何描述我正在寻找的东西。但我创建了一个示例(s.jsfiddle)以使其更加清晰:

example infowindow

例如,有一个 InfoWindow 应该仅在搜索输入上方的事件标记区域内弹出。

此外,搜索结果的范围也应显示在搜索字段上方,如下所示:

google map bound areas

有没有办法按照我试图描述的方式操纵Google Maps JavaScript API V3

<小时/>

编辑:将解决方案想法添加为 answer (它们之前已在问题部分中进行过解释)...

最佳答案

因为我可能(感谢反对票)在这里不会得到任何帮助,所以我暂时发布我的解决方案。 希望对将来的人有所帮助。

据我所知,这个问题没有标准的解决方案,所以我将问题分为两部分:

  1. InfoWindow 的正确显示。我发现的唯一选择是覆盖 max-height。只要标记位于搜索输入上方,这种方法就暂时有效:

    JS:

    google.maps.event.addListener(infowindow, 'domready', function() {
        var iwOuter = $('.gm-style-iw');
        iwOuter.children(':nth-child(1)').addClass('custom-iw');
    });
    

    CSS:

    .custom-iw {
        max-height: calc(100vh - 120px - 160px) !important;
        /**
         * 100vh total map height
         * 120px the position of the search input
         * 160px the size of the marker and the margin above the InfoWindow
         **/
    }
    

    请参阅updated jsfiddle然后单击标记看看我的意思。

    screenshot jsfiddle

<小时/>
  • 为输入字段的搜索结果。我通过减去边界本高度度的相对部分来纠正边界。结果会显示在搜索输入上方一点。

    JS

    var ne = bounds.getNorthEast(); 
    var sw = bounds.getSouthWest(); 
    var heightInput = Math.abs(parseInt($('.map-search').css('margin-top'))); 
    var factor = $('#map').height() / heightInput;
    var south = sw.lat() - (ne.lat() - sw.lat())/factor;  // That's where happens the correction      
    bounds = new google.maps.LatLngBounds(
        new google.maps.LatLng(south, sw.lng()),
        new google.maps.LatLng(ne.lat(), ne.lng())            
    );
    

    请参阅updated jsfiddle并输入搜索查询(例如复活节岛)来看看我的意思。

    screenshot jsfiddle 2

  • 关于javascript - 谷歌地图 - 定义边界和信息窗口的事件操作区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45644196/

    相关文章:

    javascript - Selenium-webdriver JS - 如何等到元素可见

    javascript - 单击另一个元素时选择(展开)下拉菜单

    javascript - jQuery UI MultiSelect 选择页面中的所有 <select>

    javascript - 使用jquery触发多个mailto链接

    javascript - Google Maps API v3 中以国家/地区名称为中心

    google-maps - Google Javascript API地理编码限制

    javascript - 在这种情况下如何进行原型(prototype)继承?

    javascript - 如何将函数的结果放入 html 表单元素中

    javascript - Angular 验证 - 按页面顺序输出无效字段

    android - 从 GeoPoints 创建 GPX 文件