2012-04-26 1 views
0

희망이 있습니다. 저는 전화 교환기에 관한 정보와 영국 내 특정 위치 및 영국에 대한 지역 정보를 담고있는 두 개의 테이블을 합병했습니다. 내가 원하는 것은 롤오버하거나 지역을 클릭 할 때 웹 페이지의 패널에 해당 영역에 속한 모든 교환을 나열 할 수 있기를 원합니다. 지역을 클릭하는 순간 테이블의 마지막 교환이 표시됩니다. 나는 이것이 내 addListeners2() 함수 내에서해야 할 일이 될 수 있다고 생각한다. 올바른 방향으로 어떤 포인터가 크게 감사하겠습니다.여러 마커가 하나의 영역 (다각형)에 속하므로 div 패널의 특정 영역에있는 모든 마커에 대한 데이터를 나열하고자합니다.

var map, layer; 
function initialize() 
{ 

    map = new google.maps.Map(document.getElementById('map_canvas'), { 
      center: new google.maps.LatLng(54.54658,-4.87793), 
      zoom: 6, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 
      loadPoint();    
    } 

     function loadPoint() 
     { 
      if (layer != null) 
      { 
       layer.setMap(null); 
       google.maps.event.clearInstanceListeners(layer); 
      } 
      var tableid = '3569550'; 
      layer = new google.maps.FusionTablesLayer 
      ({ 
       query: 
       { 
        select: 'LATITUDE', 
        from: tableid 
        //where: 'latitude is not null' 
       }, 

      map: map     
      }) 
      layer.enableMapTips({ 
      select: "'REGION','EXCHANGE','MPF','WLR','SMPF','BB_CONNECT'", // list of columns to query, typially need only one column. 
      from: tableid, // fusion table name 
      geometryColumn: 'LATITUDE', // geometry column name 
      suppressMapTips: true, // optional, whether to show map tips. default false 
      delay: 100, // milliseconds mouse pause before send a server query. default 300. 
      tolerance: 8 // tolerance in pixel around mouse. default is 6. 
      }); 
      addListeners1(); 
     } 

     function loadRegion() 
     { 
      if (layer != null) 
      { 
       layer.setMap(null); 
       google.maps.event.clearInstanceListeners(layer); 
      } 
      var tableid = '3569550'; 
      layer = new google.maps.FusionTablesLayer 
      ({ 
       query: 
       { 
        select: 'geometry', 
        from: tableid 
       }, 

      map: map     
      }) 
      layer.enableMapTips({ 
      select: "'REGION','EXCHANGE','MPF','WLR','SMPF','BB_CONNECT'", 
      from: tableid, // fusion table name 
      geometryColumn: 'geometry', // geometry column name 
      suppressMapTips: true, // optional, whether to show map tips. default false 
      delay: 100, // milliseconds mouse pause before send a server query. default 300. 
      tolerance: 8 // tolerance in pixel around mouse. default is 6. 
      }); 
      addListeners2(); 
     } 

     function addListeners1() 
     { 
      google.maps.event.addListener(layer, 'mouseover', function(fEvent) 
      { 
       var row = fEvent.row; 
       myHtml = '<TABLE width = "600" cellspacing="0" cellpadding="0"><TR>'; 
       myHtml += '<TD><b>REGION</b></TD>'; 
       myHtml += '<TD><b>EXCHANGE</b></TD>'; 
       myHtml += '<TD><b>MPF</b></TD>'; 
       myHtml += '<TD><b>WLR</b></TD>'; 
       myHtml += '<TD><b>SMPF</b></TD>'; 
       myHtml += '<TD><b>BB_CONNECT</b></TD></TR><TR>'; 
       for (var x in row) 
       { 
        if (row.hasOwnProperty(x)) 
        { 
         myHtml += '<td>' + row[x].value +'</td>'; 
        } 
       } 
       myHtml += '</TR></TABLE>'; 
       document.getElementById('info').innerHTML = myHtml; 
      }); 
     } 

     function addListeners2() 
     { 
      google.maps.event.addListener(layer, 'mouseover', function(fEvent) 
      { 
       var row = fEvent.row; 
       myHtml = '<TABLE width = "600" cellspacing="0" cellpadding="0"><TR>'; 
       myHtml += '<TD><b>REGION</b></TD>'; 
       myHtml += '<TD><b>EXCHANGE</b></TD>'; 
       myHtml += '<TD><b>MPF</b></TD>'; 
       myHtml += '<TD><b>WLR</b></TD>'; 
       myHtml += '<TD><b>SMPF</b></TD>'; 
       myHtml += '<TD><b>BB_CONNECT</b></TD></TR><TR>'; 
       for (var x in row) 
       { 
        if (row.hasOwnProperty(x)) 
        { 
         myHtml += '<td>' + row[x].value +'</td>'; 
        } 
       } 
       myHtml += '</TR></TABLE>'; 
       document.getElementById('info').innerHTML = myHtml; 
      }); 
     } 
} 

답변

0

나는 해결책을 발견했다 !!!

function loadRegion() 
{ 
    if (layer != null) 
    { 
     layer.setMap(null); 
     google.maps.event.clearInstanceListeners(layer); 
    } 
    layer = new google.maps.FusionTablesLayer 
    ({ 
     query: 
     { 
      select: 'geometry', 
      from: tableid 
     }, 
     map: map     
    }) 
    google.maps.event.addListener(layer, 'click', function(e) 
    { 
     if (e && e.row && e.row["REGION"]) 
     { 
      query4infowindowData(e.row["REGION"].value); 
      infowindow.setPosition(e.latLng); 
     } 
     else 
     { 
      alert("no row:"+e.latLng); 
     } 
    }); 
} 
function query4infowindowData(term) 
{ 
    var queryText = "SELECT 'REGION', 'EXCHANGE', 'MPF', 'WLR', 'BB_CONNECT', 'SMPF' FROM "+tableid+" WHERE 'REGION' = '"+term+"';"; 
    var encodedQuery = encodeURIComponent(queryText); 
    var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq=' + encodedQuery); 
    query.send(openInfoWindow); 
} 
function openInfoWindow(response) 
{ 
    if (!response) 
    { 
     alert('no response'); 
     return; 
    } 
    if (response.isError()) 
    { 
     alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); 
     return; 
    } 
    FTresponse = response; 
    numRows = response.getDataTable().getNumberOfRows(); 
    numCols = response.getDataTable().getNumberOfColumns(); 
    var dataTable = response.getDataTable(); 
    var contents = "REGION: <u><b>"+dataTable.getValue(0,0)+"</b></u><br><table border='1'><tr><th>#</th><th>EXCHANGE</th><th>MPF</th><th>WLR</th><th>BB_CONNECT</th><th>SMPF</th></tr>"; 
    for(i = 0; i < numRows; i++) 
    { 
     contents += "<tr><th>"+i+"</th><td>"+dataTable.getValue(i,1) 
      +"</td><td>"+dataTable.getValue(i,2) 
      +"</td><td>"+dataTable.getValue(i,3) 
      +"</td><td>"+dataTable.getValue(i,4) 
      +"</td><td>"+dataTable.getValue(i,5) 
      +"</td></tr>"; 
    } 
    contents += "</table>"; 
    document.getElementById('info').innerHTML = contents; 

} 
0

은 내가 Fusion Tips 유틸리티 라이브러리에 익숙하지 않아요하지만 문서는 where 절을 지원하지 않습니다 보여줍니다. 어떤 종류의 의미가 있습니다. 도구 설명은 단일 점 또는 다각형과 연관됩니다. where 절 (즉, region = XXX 인 교환을 선택)이 필요합니다.

그런 쿼리를 실행할 수있는 google.visualization 라이브러리를 사용해 보거나 Fusion Table JSONP API를 사용하여 같은 것을 허용 할 수 있습니다. 꽤 다른 시각화 예제 here이 있지만 원하는대로 처리하도록 수정할 수 있습니다.

+0

덕분에 당신의 응답 에릭, 나는 그 google.visualization 라이브러리를 확인하고 내가이 일의 작업을 얻을 수 있는지 확인할 수 있습니다. – Jon