2

有可能这样做吗?

这是我在 Google https://groups.google.com/forum/?fromgroups=#!topic/google-maps-js-api-v3/kdgueJzwvK4中找到的。

我做了这个:

  # TODO In case input has currently a value
  if autocomplete.getPlace()
    places.pin(autocomplete.getPlace(), map, input)

但是autocomplete.getPlace()当用户没有触发某些事件时返回 undefined。

用户输入一些数据后,我可以places.pin(autocomplete.getPlace(), map, input)毫无问题地使用

我试图触发输入的变化,但没有运气$(input).trigger('change')

4

1 回答 1

3

这是我很久以前写的一些代码,可能会为您指明正确的方向。您可能需要填补一些空白。

<!DOCTYPE html>
     <html lang="en">
          <head>
          </head>
     <body>
         <input id="gmap_start_address" type="text" />
     </body>
</html>

initialize();
        // Handle enter button click event for start address input text field
        $("#gmap_start_address").keypress(function(event){
            if(event.keyCode == 13){
                event.preventDefault();
                goStartAddr();
            }
        });

/**
 * Handle initialization of google map
 * @params
 */
function initialize() {
    var gmapZoom = 4;
    geocoder = new google.maps.Geocoder();
    // Set default myLatLng to be used if google.loader.ClientLocation fails
    var myLatlng = new google.maps.LatLng(40.8802950337396, -102.21679674999996);
    // If ClientLocation was filled in by the loader, use that info instead
    if (google.loader.ClientLocation) {
        gmapZoom = 13;
        myLatlng = new google.maps.LatLng( google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
    }
    var myOptions = {
        zoom: gmapZoom,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    var polyOptions = {
        strokeColor: '#5F5CFA',
        strokeOpacity: 0.5,
        strokeWeight: 3
    }
    poly = new google.maps.Polyline(polyOptions);
    poly.setMap(map);
    // Add a listener for the click event
    google.maps.event.addListener(map, 'click', addLatLng);
}

/**
 * Handle GO button click to process start address
 * @params
 */
function goStartAddr(){
    var startAddr = $('#gmap_start_address').val();
    if(startAddr != '' && startAddr != 'Starting address, city, zip code'){
        placeStartMkr();
    } else {
        alert('Please enter start address.');
        $('#gmap_start_address').focus();
    }
}
/**
 * Handle marker placement from human address start point.
 * Originally this function placed a starting marker
 * Starting marker code is commented out and preserved for
 * ease of use in the future.
 * @params
 */
function placeStartMkr(){
    // Grab address
    var humanAddr = $('#gmap_start_address').val();
    geocoder.geocode( { 'address': humanAddr}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
            map.setZoom(16);
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}
于 2013-05-01T17:29:41.727 回答