2015-09-17 74 views
-1

我正在使用Fusion Table和Google Map API,並想知道在放置標記時是否可以自動觸發事件。觸發標記點擊

目前,我可以點擊地圖,我得到一個自定義的infowindow,但我想做同樣的事情,但經過地理編碼和放置一個標記...我想這會自動發生。

這裏是我到目前爲止的代碼:

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); 
     } 
    }); 
} 
+0

是否必須重新構建信息窗口howAddress? – Ian

+0

您是否在尋找[this](http://www.geocodezip.com/v3_collection-map2e_FT.html)?在FusionTablesLayer上「觸發」點擊是不太可能的(你可以,但你基本上需要在click事件中複製信息,這很痛苦),你可以查詢表格,在標記上創建你自己的infowindow雖然。 – geocodezip

+0

是的,這就是我所追求的,基本上這就是我在代碼的第一次剪切時所做的,但是我遇到了一個問題。當我查詢Fusion表建立信息窗口時,它會返回錯誤的信息(沒有選中你點擊的多邊形)。去e.infoWindowHtml路線糾正了這一點。幾乎就像它是一個多邊形排序的東西, – Ian

回答

0

感謝geocodezip

這是不是真的有可能「觸發」在FusionTablesLayer會點擊(你可以,但你基本上需要在點擊事件中複製信息,這很痛苦),您可以查詢表格,在標記上創建自己的infowindow,但