망막 이미지가있는 Google지도에서 마커 클러스터 러 플러스를 사용하는 방법

StackOverflow https://stackoverflow.com//questions/21047829

도움이 되었습니까?

해결책

이것은 Marker Clusterer Plus에서 분명히 버그입니다. 실제로이 옵션을 사용하는 코드의 유일한 장소는 다음과 같습니다.

img = "<img src='" + this.url_ + "' style='position: absolute; top: " + spriteV + "px; left: " + spriteH + "px; ";
if (!this.cluster_.getMarkerClusterer().enableRetinaIcons_) {
  img += "clip: rect(" + (-1 * spriteV) + "px, " + ((-1 * spriteH) + this.width_) + "px, " +
      ((-1 * spriteV) + this.height_) + "px, " + (-1 * spriteH) + "px);";
}
img += "'>";
.

실제로 실제로 스프라이트 아이콘을위한 클리핑을 비활성화하지만 실제로 필요한 망막 동작을 실제로 실행하지 않습니다. 아이콘의 HTML 트리는 실제로 다음과 같습니다.

여기에 이미지 설명

그래서 아이콘을 둘러싼 Div가 적절한 치수 세트 (33x33)가 있지만 매우 이미지 (파란색 코드)는 치수가 설정되지 않습니다.

다른 분기를 추가하여 마커 클러스터 러 라이브러리를 패치하여 문제를 해결하려고 시도했습니다.

img = "<img src='" + this.url_ + "' style='position: absolute; top: " + spriteV + "px; left: " + spriteH + "px; ";
if (!this.cluster_.getMarkerClusterer().enableRetinaIcons_) {
  img += "clip: rect(" + (-1 * spriteV) + "px, " + ((-1 * spriteH) + this.width_) + "px, " +
      ((-1 * spriteV) + this.height_) + "px, " + (-1 * spriteH) + "px);";
}
else {
    img += "width: " + this.width_ + "px;" + "height: " + this.height_ + "px;";
}
img += "'>";
.

작동하는 것 같습니다 :

패치 된 라이브러리 완료 @Pastebin

테스트 예제 - http://jsfiddle.net/rt28t/2/2/2/A>

버그를보고하고 제안 된 패치로 추가 할 수 있습니다. -)

다른 팁

이 질문에 대한 답변을 알고 있지만,이 문제를 해결하는 또 다른 방법 (아마도 쉽게 쉽게)은 SVG 마커 아이콘 을 사용하여 입니다.그런 식으로 :

  • 솔루션은 모든 장치 픽셀 밀도
  • 를 지원합니다.
  • 라이브러리를 패치 할 필요가 없습니다 (원인 할 수있는 모든 문제가있는 경우)
  • 현재 브라우저 지원은 꽤 훌륭합니다 - Caniuse.com svg-img 통계

아이콘을 두 번 크기로 업로드하십시오.

m1.png = 53x53 (normal) 106x106 (retina)
m2.png = 56x56 (normal) 112x112 (retina) 
m3.png = 66x66 (normal) 132x132 (retina)
m4.png = 78x78 (normal) 156x156 (retina)
m5.png = 90x90 (normal) 180x180 (retina)
.

및 CSS에 추가 :

#map .cluster img {
    max-width: 100%;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top