Google Map AddListener问题

时间:2015-12-11 08:05:34

标签: 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 的会话的值。 但我还想在文本框中指定的位置的页面加载上显示地图。

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

1 个答案:

答案 0 :(得分:0)

你可以在加载时调用change事件,而不是它会被触发。

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

或者使用js;

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