Google지도 아이콘의 색상을 변경하려면 어떻게해야하나요?


167

마커로 가득 찬지도를 만들기 위해 Google Maps API를 사용하고 있지만 마커 하나가 다른 마커와 차별화되도록하고 싶습니다. 가장 간단한 방법은 마커의 색상을 빨간색 대신 파란색으로 변경하는 것입니다. 이것은 간단한 일입니까, 아니면 완전히 새로운 아이콘을 만들어야합니까? 새 아이콘을 만들어야하는 경우 가장 쉬운 방법은 무엇입니까?


2
이 게시물을 어제부터 확인하고 싶을 수도 있습니다 : stackoverflow.com/questions/2467720/…
Daniel Vassallo

혹은 더 나은 포스트 stackoverflow.com/questions/7095574/...
Faizan

답변:


45

맵 v2는 더 이상 사용되지 않으므로 v3 맵에 관심이있을 것입니다 : https://developers.google.com/maps/documentation/javascript/markers#simple_icons

v2 맵의 경우 :

http://code.google.com/apis/maps/documentation/overlays.html#Icons_overview

하나의 로직 세트는 모든 '정규'핀을 수행하고 다른 로직은 정의 된 새 마커를 사용하여 '특수'핀을 수행합니다.


24
향후 독자를위한 참고 사항 : 더 이상 사용되지 않는 Google Maps API v2 용입니다. v3을 사용하는 경우 다른 곳을 찾아야합니다.
priestc

12
첫 번째 링크 인 'color'에 대해 ctrl-f를 클릭했습니다. 결과가 없습니다. 실제로 질문에 대답하기 위해 답변에 더 자세한 내용을 추가하는 것이 좋습니다. OP는 특별히 새 아이콘 만들지 않고 색상을 변경할 수 있는지 묻습니다 .
qwertzguy

125

Google Maps API 버전 3을 사용하는 가장 쉬운 방법은 Benjamin Keen이 만든 아이콘과 같은 맞춤 아이콘을 가져 오는 것입니다.

http://www.benjaminkeen.com/?p=105

해당 아이콘을 모두지도 페이지와 같은 곳에두면 마커를 만들 때 적절한 아이콘 옵션을 사용하여 간단히 마커를 채색 할 수 있습니다.

var beachMarker = new google.maps.Marker({
  position: myLatLng,
  map: map,
  icon: 'brown_markerA.png'
});

이것은 매우 쉽고, 현재 작업중 인 프로젝트에 사용하는 접근 방식입니다.


6
이 답변은 굉장합니다. 나는 받아 들인 대답이 V2에 대한 것이 슬프지만 감사하게 아래로 스크롤하여 돈을 지불했다. 감사!
Adam Tuttle

이미지에 의존하지 않는 버전을 만들었습니다 : stackoverflow.com/a/23163930/1689770
Jonathan

49

MapIconMaker : Google Maps v2 용 라이브러리

한 가지 방법은 MapIconMaker (데드 링크) 를 사용하는 입니다. 여기에 예가 있습니다 (데드 링크). Google지도 기본 아이콘의 너비는 20px, 높이는 34px이므로 다음과 같이 에뮬레이션 할 수 있습니다.

var newIcon = MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: "#0000FF", cornercolor:"#0000FF"});
var marker = new GMarker(map.getCenter(), {icon: newIcon});

당신은 그것을 쉽게 할 수 있도록 몇 가지 기능으로 포장 할 수도 있습니다.

function getIcon(color) {
    return MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: color, cornercolor:color});
}

그것이 내가 만든 모든 마커에 개인적으로 사용하는 것입니다. 변덕스러운 색상을 변경하는 옵션을 선호합니다.

업데이트 : 기본 아이콘의 16 진수 색상은 "# FE7569"입니다. 또한 새 아이콘으로 새 마커를 만드는 대신 마커에서 이미지를 설정할 수 있습니다. 따라서 함수를 강조 표시하려면 위의 함수를 사용하여 다음과 같이 할 수 있습니다.

function highlightMarker(marker, highlight) {
    var color = "#FE7569";
    if (highlight) {
        color = "#0000FF";
    }
    marker.setImage(getIcon(color).image);
}

StyledMarker : Google Maps v3 용 라이브러리

V2가 언젠가 V3으로 바뀌 었 으므로이 답변을 업데이트해야한다고 생각했습니다. 나는 V3 유틸리티 라이브러리에서 찾을 수 있습니다 사용자 정의 마커에 대한 라이브러리를 만들어 여기 (deadlink). 다양한 색상과 모양을 사용할 수 있으며 마커에 텍스트를 배치 할 수도 있습니다. Google지도 유형 마커를 만드는 방법이있는 Google 차트 API를 사용하여 작동합니다. Google Charts API를 직접 사용하려면 소스 코드를 확인하십시오.

그러나 해당 라이브러리에 대한 것은 이러한 마커 이미지의 클릭 가능한 영역을 정의하는 것이므로 예를 들어 텍스트가 많은 버블은 이 예제 (데드 링크) 와 같이 클릭 가능한 영역을 갖게됩니다.


3
이것이 GMaps API v2 와만 호환되는 것 같습니다.
Tigraine

7
@Tigraine 저는 v3 유틸리티 라이브러리 ( code.google.com/p/google-maps-utility-library-v3/wiki/Libraries
Bob)

v3에 대한 Sean McMains의 답변을보십시오
smp7d

@Matt 원래 예, 그것은 단지 v2였습니다. 이후 v3 솔루션을 포함하도록 업데이트되었습니다
Bob

참고로 "setImage"는 Google Maps API v3의 시장 기능이 아닙니다. "setIcon"은 올바른 기능입니다.
Nick Bork

39

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 머티리얼 디자인

프로그래밍 방식의 핀 색상으로 편집 한 2019 년 3 월

순수한 자바 스크립트, 이미지 없음, 지원 레이블

더 이상 사용되지 않는 Charts API에 의존하지 않습니다.

    var pinColor = "#FFFFFF";
    var pinLabel = "A";

    // Pick your pin (hole or no hole)
    var pinSVGHole = "M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z";
    var labelOriginHole = new google.maps.Point(12,15);
    var pinSVGFilled = "M 12,2 C 8.1340068,2 5,5.1340068 5,9 c 0,5.25 7,13 7,13 0,0 7,-7.75 7,-13 0,-3.8659932 -3.134007,-7 -7,-7 z";
    var labelOriginFilled =  new google.maps.Point(12,9);


    var markerImage = {  // https://developers.google.com/maps/documentation/javascript/reference/marker#MarkerLabel
        path: pinSVGFilled,
        anchor: new google.maps.Point(12,17),
        fillOpacity: 1,
        fillColor: pinColor,
        strokeWeight: 2,
        strokeColor: "white",
        scale: 2,
        labelOrigin: labelOriginFilled
    };
    var label = {
        text: pinLabel,
        color: "white",
        fontSize: "12px",
    }; // https://developers.google.com/maps/documentation/javascript/reference/marker#Symbol
    this.marker        = new google.maps.Marker({
        map: map.MapObject,
        //OPTIONAL: label: label,
        position: this.geographicCoordinates,
        icon: markerImage,
        //OPTIONAL: animation: google.maps.Animation.DROP,
    });

2
여기서 볼 수 있듯이이 기능은 더 이상 사용되지 않습니다 . 이것은 실망스러운 상황으로, 더 이상 사용되지 않으며 이전에 사용했던 이전 버전 MapIconMaker은 더 이상 사용되지 않습니다.
zerowords

https에서는 작동하지 않으며 http에서만 작동합니다. 버머!
JoeGalind

@JoeGalind 색상을 가져올 때 암호화가 필요한 이유가 있습니까? 내 말은, http헤더에서 알지 못하는 것을 노출시키지 않으면 보안 위험이 없음을 알 수 있습니다.
Jonathan

@JonathanLeaders : 이것은 https 호출이 아니기 때문에 프로젝트의 info.plist에서 허용 된 목록에 도메인을 추가해야 함을 의미합니다.
JoeGalind

6
2019 년 업데이트, 더 이상 사용되지 않음
Jonathan


12

내가 찾은 가장 간단한 방법은 BitmapDescriptorFactory.defaultMarker ()를 사용하는 것입니다. 문서 에는 색상 설정의 예가 있습니다. 내 자신의 코드에서 :

MarkerOptions marker = new MarkerOptions()
            .title(formatInfo(data))
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
            .position(new LatLng(data.getLatitude(), data.getLongitude()))

이 안드로이드 전용입니까, 아니면 웹 브라우저 용입니까?
Jonathan

@Jonathan-이것은 안드로이드 전용입니다-그가 게시 한 예는 JAVA에 있습니다
dazza5000

2

마커를 사용자 정의하려면 다음 온라인 도구에서이를 수행 할 수 있습니다. https://materialdesignicons.com/

귀하의 경우 https://materialdesignicons.com/icon/map-marker 에서 사용할 수 있고 온라인으로 사용자 정의 할 수 있는 맵 마커 를 원합니다 .

기본 빨간색을 파란색으로 변경하려면 http://maps.google.com/mapfiles/ms/icons/blue-dot.png 아이콘을로드하면됩니다.

이 스레드에서 언급되었습니다 : https://stackoverflow.com/a/32651327/6381715


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.