2

次のコードは、環状マップ領域に基づいてGoogle融合テーブルを照会します。Googleフュージョンマップ:サークルブロックレイヤのクリックイベント、javascript

円形マップ領域の中心は、ユーザーがクリックした場所によって決定され、半径はドロップダウンメニューからの選択によって決定されます。ユーザーがマッピングされたポイントをクリックすると、対応する融合表の行からの情報を表示する情報ボックスが表示されるように、リスナーが設定されています。

マップにサークルを追加するまで(ユーザーが選択した地域を示すために)、これはすべて正常に動作します。円の存在がレイヤのクリックイベントリスナーをブロックしているようです。私は無駄にZ - インデックスを変更しようとしました。誰もこの問題を回避する方法を提案できますか?

function initialize() {  

     tableid = xxxxxxx; 

       // Initialize the Google Map 
     var map = new google.maps.Map(document.getElementById('map_canvas'), { 
      center: new google.maps.LatLng(37.3, -122.3), 
      zoom: 8, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
                       });                   
     var layer = new google.maps.FusionTablesLayer({  
      query: { 
      select: 'Address', 
      from: tableid, 
      where: 'ST_INTERSECTS(Address, CIRCLE(LATLNG(37.3, -122.3), 5000))' 
        } 
                 }); 
     layer.setMap(map); 
     layer.index = 1; 
     map.index =2; 
     var meters = 5000; 
     var center = map.getCenter(); 

     // Update the radius when the user makes a selection. 
     google.maps.event.addDomListener(document.getElementById('radius'), 'change', function() { 
      meters = parseInt(this.value, 10); 
      circle.setRadius(meters); 
      searchStr = 'ST_INTERSECTS(Address, ' +'CIRCLE(LATLNG'+center+', ' + meters + '))' 
      searchStr += " AND " + "filter_1 IN ("+filterSelection+")"; 
      layer.setOptions({ 
       query: { 
       select: 'Address', 
       from: tableid, 
       where: searchStr 
         } 
           }); 
                            });                                                          //Update the filter when the user makes a selection. 
     google.maps.event.addDomListener(document.getElementById('filter'),'change', function() { 
      filterSelection = this.value; 
      searchStr = 'ST_INTERSECTS(Address, ' + 'CIRCLE(LATLNG'+center+', ' + meters + '))' 
      searchStr += " AND " + "filter_1 IN ("+filterSelection+")"; 
      layer.setOptions({ 
       query: { 
       select: 'Address', 
       from: tableid, 
       where: searchStr 
         } 
           }); 
                            }); 

     //Info Box Populate click handler 
     google.maps.event.addListener(layer, 'click', function(e) { 
      alert("Info Click"); 
      e.infoWindowHtml = e.row['Title'].value + "<br>"; 
                    }); 
     //Click Handler 
     google.maps.event.addListener(map, 'click', function(e) { 
      circle.setCenter(e.latLng); 
      center = e.latLng; 
      searchStr = 'ST_INTERSECTS(Address, ' + 'CIRCLE(LATLNG'+e.latLng+', ' + meters + '))' 
      searchStr += " AND " + "filter_1 IN ("+filterSelection+")"; 
      layer.setOptions({ 
       query: { 
       select: 'Address', 
       from: tableid, 
       where: searchStr 
         } 
           }); 
                    });  
     // Create a map circle object to visually show the radius. 
     var circle = new google.maps.Circle({ 
      center: new google.maps.LatLng(37.3, -122.3), 
      radius: 5000, 
      map: map, 
      fillOpacity: 0.1, 
      strokeOpacity: 0.5, 
      strokeWeight: 1 
              }); 
     circle.index = 0; 
     circle.setmap(map); 
         } 

答えて

10

あなたがサークルを作成すると、CircleOptionsはclickable: false

それが動作
+0

をオブジェクトに追加してみてください!本当にありがとう、これが何であるか教えてください! –

+0

私は同じ問題を抱えていましたが、これは神様です! – revolver

+0

ありがとう!私も! :) – NSTJ

関連する問題