javascript - 谷歌地图添加监听器问题

标签 javascript jquery google-maps

我编写了以下代码..它在 Place_change 上触发添加监听器事件,但我想在页面加载时触发该事件..这是从谷歌复制的,我做了一些更改。

function _initMap(latlng){
    // google map
    $map = $(".lwizard-step1-map");
    _latlng = latlng || new google.maps.LatLng(41.3833333,2.1833333);
    if (!_STEP1_LOCATION_MAP) {
        _STEP1_LOCATION_MAP = new google.maps.Map($map[0],{
            center: _latlng,
            zoom:11,
            mapTypeId:google.maps.MapTypeId.ROADMAP,
            streetViewControl:false,
            scrollwheel:false
        });
    } else {
        _STEP1_LOCATION_MAP.setCenter(_latlng);
    }

    if (!_STEP1_LOCATION_MARKER) {
        _STEP1_LOCATION_MARKER = new google.maps.Marker({
            position: _latlng,
            map: _STEP1_LOCATION_MAP,
            draggable: true
        });

        google.maps.event.addListener(_STEP1_LOCATION_MARKER, "dragend", function(event) {
            var lat = event.latLng.lat(); 
            var lng = event.latLng.lng(); 
            $("#lwizard-step1-location-autocomplete").val('');
            STEP1_PLACE.latLng = [lat,lng];
            STEP1_PLACE.address = null;
            $.ajax({
                url: 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+lng+'&sensor=false',
                success: function(response){
                    if ((response) && (response.results) && (response.results.length)){
                        $(".lwizard-step1-chosen-address").parent().show();

                        var $address = $(".lwizard-step1-chosen-address");
                        $address.text(response.results[0].formatted_address);
                        $("#lwizard-step1-adjust-onmap").data("location", response.results[0].geometry.location);
                        STEP1_PLACE.address = nc.utils.convertGoogleAddressComponents(response.results[0].address_components);
                    }
                }
            })
        }); 
    } else {
        _STEP1_LOCATION_MARKER.setPosition(_latlng);
    }
}

// autocomplete
$input = $("#lwizard-step1-location-autocomplete");


_STEP1_LOCATION_GA = new google.maps.places.Autocomplete($input[0],{ types: [] });  
google.maps.event.addListener(_STEP1_LOCATION_GA, 'place_changed', function () {

    var place = _STEP1_LOCATION_GA.getPlace();
    console.log(place)
    var $where = $(".lwizard-step1-chosen-address");
    var found = ((place) && (place.formatted_address) && (place.geometry) && (place.id));
    if (place && found) {
        $("#lwizard-step1-adjust-onmap").data("location", place.geometry.location);
        STEP1_PLACE.address = nc.utils.convertGoogleAddressComponents(place.address_components);
        STEP1_PLACE.latLng = [place.geometry.location.lat(),place.geometry.location.lng()];
        STEP1_PLACE.location = place.geometry.location;
        $where.parent().show();
        $where.text(place.formatted_address);
        $("#lwizard-step1-right-1").show();
        $("#lwizard-step1-right-2").hide();
        _initMap(place.geometry.location);
    } else {
        $where.parent().hide();
        $("#lwizard-step1-right-1").show();
        $("#lwizard-step1-right-2").hide();
        _initMap();
    }
});

我有一个名为 lwizard-step1-location-autocomplete 的文本框,它在页面加载时显示名为 SessionLocation 的 session 的值。 但我还想在文本框中指定的位置的页面加载时显示 map 。

但问题是 addlistener 仅在 文本框更改 意味着 Place_changed 事件时触发。 请给一些建议或者新方法。

最佳答案

您可以在加载时调用更改事件,然后它就会被触发。

$('#lwizard-step1-location-autocomplete').trigger("change");

或者用js;

document.getElementById('lwizard-step1-location-autocomplete').fireEvent("onchange");

关于javascript - 谷歌地图添加监听器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34218721/

相关文章:

javascript - Jquery "the event object"试图更改 <div> 标签的 "CSS"不起作用

javascript - 踩范围输入

css - 如何解决谷歌地图信息窗口的样式问题?

google-maps - 使 d3 svg 路径可点击(在 Google map 叠加层中)

javascript - 当tbody有很多元素时jquery获取真实的表格高度

javascript - 你能控制网页上图像(隐藏与可见)的加载顺序吗?

jquery - 用另一个 div-jquery 更改 div 的内容

android - 由 GoogleMaps 引起的稳定发布应用程序中无法解释的 IncompatibleClassChangeError

javascript - 即使在获取数据后,React 组件的 render 方法也会调用两次

javascript - 查看 javascript 中的所有超时/间隔?