2011-07-26 2 views
6

마커 클러스터링 (예 : makerclusterer)을 퓨전 테이블 레이어에서 사용할 수 있나요? 융합 표 레이어를 사용할 때 markerclusterer에 마커를 할당해야하지만 Google은 마커/정보창을 처리합니다. 아직도이 융합 테이블을 알아 내려고 노력 중입니다. 기본적으로 마커 많은 양의 클러스터 수있는 방법을 찾고마커 클러스터링 - 퓨전 테이블 레이어 - Google지도 v3

퓨전 테이블

답변

0

퓨전 테이블을 사용하면 서버 측 렌더링 (Google 서버에서)을 사용하여 한 번에 수천 개의 포인트를 볼 수 있습니다. Marker Clusterer는 클라이언트 브라우저의 가장 가까운 지점에서 클러스터 세트를 작성하여 문제를 해결합니다. 나는 반드시 둘 다 동시에 사용하지는 않겠지 만, 그것은 당신에게 달려있다.

당신은 그들이 여기에 작동하는 방법에 대한 자세한 정보를 읽을 수 있습니다 :

http://code.google.com/apis/maps/articles/toomanymarkers.html

을 당신이 정말 너무 당신이 마커 클러스터 러에 퓨전 테이블에서 데이터를 공급하는 퓨전 테이블 API를 사용할 수 원하는 경우.

희망이 도움이됩니다.

1

를 통해 제공되는 나는 당신이 융합 테이블과 작업을 얻을 것이다 생각하지 않습니다. 융합 테이블의 IMO는 공간 인덱스에 대한 지원이 부족합니다. si는 2d 복잡성을 1d 복잡성으로 줄이는 데 도움이됩니다. 히트 맵, 트리 맵, 포스트 코드 검색, 맵 어플리케이션과 같은 많은 어플리케이션에서 사용됩니다. 닉의 힐버트 곡선 공간 인덱스 쿼드 트리 블로그를 찾고 싶습니다.

5

퓨전 테이블 레이어는지도 타일 위에 겹쳐진 각 타일의 추가 PNG 이미지를 렌더링합니다.이 타일은 해당 타일의 데이터 포인트를 포함하며 서버 쪽 렌더링 부분입니다. 따라서 데이터 포인트가 포함 된 타일 당 여러 데이터 포인트가 있습니다.

MapsIt.png map tile with data points already positioned on the layer

, MarkerClusterer에 필요한 인 데이터에서 자신의 마커를 생성 타일 당 이미지를 오버레이하지 않고, 각 데이터 포인트에 대한지도의 개별 마커를 만들고에게 스프라이트 이미지를 오버레이 그. 이를 바탕으로

Marker Sprite image used for each data point

, MarkerClusterer 및 FusionTablesLayer의를 사용할 수 없습니다.

+0

나 자신을 위해이 게시물을 연구했습니다. Google Fusion Tables 팀에 따르면 가능하다는 의견을 남기고 싶습니다. [https://groups.google. – danagerous

+0

@danagerous FusionTablesLayer에서 수행하는 것과 Fusion Table의 데이터를 사용하는 것 사이에는 큰 차이가 있습니다. 예를 들어 언급 한 게시물과 같습니다. 그것은 퓨전 테이블에서 데이터를 사용하여 수행 할 수 있습니다, 그것은 여전히 ​​서버 측 렌더링 된 FusionTablesLayer를 사용하여 수행 할 수 없습니다. 그들은 서버 측의 각 줌 레벨에서 그룹화 된 항목의 레이어를 만들어야합니다. – Freddy

+0

@danagerous 귀하의 링크가 깨졌습니다. 당신은 대체물을 가지고 있습니까? – tentaclenorm

5

이것은 내 자신의 코드입니다. 이전 링크에서이 기술을 시도했지만 나에게 도움이되지 못했습니다. 그래서 이것이 내가 해낸 방법입니다.

먼저 내가, 일반 차트 API 쿼리와

function initialize() { 
    mapMain = new google.maps.Map(document.getElementById('map-canvas'), { 
     center: new google.maps.LatLng(37.4, -100.1), 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
    mc = new MarkerClusterer(mapMain); 
    var queryText = encodeURIComponent("select wikipedia_article, xy from "+tableid); 
    var query = new google.visualization.Query("https://www.google.com/fusiontables/gvizdata?tq="+queryText); 
    query.send(handleQueryResponse); 
} 

다음, 내 handleQueryResponse에서, 나는 동적으로 생성 된 마커를 융합 테이블을 조회하고 Mapclusterer

function handleQueryResponse(response){ 
    dataTable = response.getDataTable(); 

    for(var i=0; i< dataTable.getNumberOfRows();i++){   
     var hrefval = dataTable.getValue(i,0).toString(); 

     var arr = dataTable.getValue(i,1).toString().split(" ");    
     var latlng = new google.maps.LatLng(arr[0], arr[1]); 

     var marker = new google.maps.Marker({ 
      position: latlng, 
      map:mapMain 
     }); 
     fn = markerClick(i, marker); 
     google.maps.event.addListener(marker,'click', fn);   
     markers.push(marker); 
    } 
    mc.addMarkers(markers); 
} 
이 경우

에 추가 기본지도, 마커 배열 (아래 코드에서 mc)은 전역 변수입니다. 전체 작동 예제 here을 볼 수 있습니다.

+2

사이트에서 수행 한 작업을 요약하여 답변을받지 못할 수도 있습니다. 링크 부패? – user7116

+0

이것은 흥미 롭습니다. FusionTableLayer에로드 된 KML 마커와 동일하게 작업하고 싶습니다. 어떤 모범이 있습니까? –

+0

나는 오랜 시간을 되돌아 보았다. 그 이후로 Google지도를 기반으로하는 작업을하지 않았다. – Ayush