触发标记点击

时间:2015-09-17 23:42:41

标签: google-fusion-tables google-geocoder

我正在使用Fusion Table和Google Map API,想知道我是否可以在放置标记时自动触发事件。

目前我可以点击地图,我得到一个自定义的信息窗口,但我想做同样的事情,但是在地理编码和放置标记之后...我希望这会自动发生。

到目前为止,这是我的代码:

var FusionTableID = '<?php echo get_theme_mod( 'fusion_id' )?>';

var map = null;
var geocoder = null;
var marker = null;

function initialize() {
  geocoder = new google.maps.Geocoder();
  var local = new google.maps.LatLng(<?php echo get_theme_mod( 'lat-long' )?>);

  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: local,
    zoom: <?php echo get_theme_mod( 'zoom' )?>
  });
  // forces a refresh to from Fusion Tables
  //var and=' geometry does not contain "'+new Date().getTime()+'"';

  var layer = new google.maps.FusionTablesLayer({
    //suppressInfoWindows: true,
    query: {
     select: "col2\x3e\x3e0",
     from: FusionTableID,
     where: ""
      },
      options: {
        styleId: 2,
        templateId: 2
      },
      map: map
    });

    layer.setMap(map);

  google.maps.event.addListener(layer, "click", function(e) {

    var point = e.latLng.toUrlValue(6);
    var latlngStr = point.split(',', 2);
    var lat = parseFloat(latlngStr[0]);
    var lng = parseFloat(latlngStr[1]);
    var latlng = new google.maps.LatLng(lat, lng);
    if (marker && marker.setMap) marker.setMap(null);
         marker = new google.maps.Marker({
              position: latlng,
              map: map
          });

         console.log(e.row['objectid'].value);
         var tname = e.row['name'].value; // name
         var targetDist =  e.row['description'].value; // description
        // poplulate the infowindow
         e.infoWindowHtml = "<div class=\"grid-100\"><h2>"+tname+"</h2>"+targetDist+"<hr></div>";
    });  
}


function showAddress() {
    var address = document.getElementById('address').value;

    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          if (marker && marker.setMap) marker.setMap(null);
          marker = new google.maps.Marker({
              map: map, 
              position: results[0].geometry.location
          });
           if (results[0].geometry.viewport) 
              map.fitBounds(results[0].geometry.viewport);

            // THIS DOESN'T WORK ****
            new google.maps.event.trigger( marker, 'click' );
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
}

1 个答案:

答案 0 :(得分:0)

感谢geocodezip

  

&#34;触发&#34;真的不可能。点击FusionTablesLayer(你可以,但你基本上需要在点击事件中复制信息,这很痛苦),你可以查询表格,然后在标记上创建你自己的信息窗口