지도 마커의 기본 Google Maps InfoWindow는 매우 둥글다. 정사각형 모서리가있는 사용자 지정 InfoWindow를 만들려면 어떻게합니까?
답변
편집 약간의 사냥 후, 이것이 최선의 선택 인 것 같습니다.
https://github.com/googlemaps/js-info-bubble/blob/gh-pages/examples/example.html
온라인 스쿠버 다이빙 로깅을위한 웹 사이트 인 Dive Seven에서 사용한이 InfoBubble의 사용자 지정 버전을 볼 수 있습니다 . 다음과 같이 보입니다.
여기에 몇 가지 예가 더 있습니다 . 그러나 스크린 샷의 예만큼 멋지지는 않습니다.
답변
jquery 만 사용하여 전체 InfoWindow를 수정할 수 있습니다.
var popup = new google.maps.InfoWindow({
content:'<p id="hook">Hello World!</p>'
});
여기서 <p> 요소는 실제 InfoWindow에 대한 후크 역할을합니다. domready가 실행되면 요소가 활성화되고 javascript / jquery를 사용하여 액세스 할 수 있습니다 $('#hook').parent().parent().parent().parent()
.
아래 코드는 InfoWindow 주위에 2 픽셀 테두리를 설정합니다.
google.maps.event.addListener(popup, 'domready', function() {
var l = $('#hook').parent().parent().parent().siblings();
for (var i = 0; i < l.length; i++) {
if($(l[i]).css('z-index') == 'auto') {
$(l[i]).css('border-radius', '16px 16px 16px 16px');
$(l[i]).css('border', '2px solid red');
}
}
});
새 CSS 클래스를 설정하거나 새 요소를 추가하는 것과 같은 모든 작업을 수행 할 수 있습니다.
필요한 것을 얻기 위해 요소를 가지고 놀아보세요 …
답변
고급 스타일링에 딱 맞는 InfoBox를 찾았습니다.
InfoBox는 google.maps.InfoWindow 처럼 작동 하지만 고급 스타일 지정을위한 몇 가지 추가 속성을 지원합니다. InfoBox를지도 레이블로 사용할 수도 있습니다. InfoBox는 또한 google.maps.InfoWindow 와 동일한 이벤트를 발생시킵니다 .
페이지에 http://code.google.com/p/google-maps-utility-library-v3/source/browse/trunk/infobox/src/infobox.js 포함
답변
정보창의 스타일링은 바닐라 자바 스크립트를 사용하면 매우 간단합니다. 이 글을 작성할 때이 스레드의 정보 중 일부를 사용했습니다. 나는 또한 이전 버전의 가능한 문제를 고려했습니다 (비록 테스트하지는 않았지만).
var infowindow = new google.maps.InfoWindow({
content: '<div id="gm_content">'+contentString+'</div>'
});
google.maps.event.addListener(infowindow,'domready',function(){
var el = document.getElementById('gm_content').parentNode.parentNode.parentNode;
el.firstChild.setAttribute('class','closeInfoWindow');
el.firstChild.setAttribute('title','Close Info Window');
el = (el.previousElementSibling)?el.previousElementSibling:el.previousSibling;
el.setAttribute('class','infoWindowContainer');
for(var i=0; i<11; i++){
el = (el.previousElementSibling)?el.previousElementSibling:el.previousSibling;
el.style.display = 'none';
}
});
코드는 콘텐츠를 보유하기 위해 ID가있는 div를 사용하여 평소와 같이 정보창을 생성합니다 (플러그인, 맞춤 오버레이 또는 거대한 코드 필요 없음). 이것은 간단한 외부 스타일 시트로 조작 할 올바른 요소를 가져 오는 데 사용할 수있는 시스템에 후크를 제공합니다.
정보 창 닫기 이미지가있는 div에 후크를 제공하는 것과 같은 작업을 처리하는 몇 가지 추가 부분 (엄격히 필요하지는 않음)이 있습니다.
마지막 루프는 포인터 화살표의 모든 부분을 숨 깁니다. 정보 창에 투명성을 원했고 화살표가 방해가 되었기 때문에 직접 필요했습니다. 물론 후크를 사용하여 화살표 이미지를 원하는 png로 바꾸는 코드를 변경하는 것도 매우 간단해야합니다.
jquery로 변경하려면 (왜 그런지 모르겠습니다) 상당히 간단해야합니다.
나는 일반적으로 자바 스크립트 개발자가 아니므로 모든 생각, 의견, 비판을 환영합니다 🙂
답변
아래 코드가 도움이 될 수 있습니다.
var infowindow = new google.maps.InfoWindow();
google.maps.event.addListener(marker, 'mouseover', (function(marker) {
return function() {
var content = address;
infowindow.setContent(content);
infowindow.open(map, marker);
}
})(marker));
여기에 < 완벽한 확대 / 축소로 Google지도에서 여러 주소를 찾는 방법 >이라는 기사가 있습니다. 작동하는 JS Fiddle 링크 및 전체 예제에 대해 참조 할 수 있습니다.
답변
FWIX.com이 구체적으로 어떻게하는지 잘 모르겠지만, 그들이 Custom Overlays를 사용하고 있다고 내기하겠습니다 .
답변
아래 코드를 사용하여 스타일 기본 창을 제거 할 수 있습니다. inforwindow에 HTML 코드를 사용할 수 있습니다.
var inforwindow = "<div style="border-radius: 50%"><img src='URL'></div>"; // show inforwindow image circle
marker.addListener('click', function() {
$('.gm-style-iw').next().css({'height': '0px'}); //remove arrow bottom inforwindow
$('.gm-style-iw').prev().html(''); //remove style default inforwindows
});