2013-02-26 16 views
78

Po załadowaniu obrazu do właściwości ikony znacznika wyświetlany jest jego oryginalny rozmiar, który jest o wiele większy niż powinien być.Zmiana rozmiaru ikony znacznika Google Maps

Chcę zmienić rozmiar na standard na mniejszy. Jaki jest najlepszy sposób na zrobienie tego?

Kod:

function addMyPos(latitude,longitude){ 
    position = new google.maps.LatLng(latitude,longitude) 
    marker = new google.maps.Marker({ 
    position: position, 
    map: map, 
    icon: "../res/sit_marron.png" 
    }); 
} 

Odpowiedz

169

Jeśli oryginalny rozmiar to 100 x 100 i chcesz go skalować do 50 x 50, użyj scaledSize zamiast rozmiaru.

var icon = { 
    url: "../res/sit_marron.png", // url 
    scaledSize: new google.maps.Size(50, 50), // scaled size 
    origin: new google.maps.Point(0,0), // origin 
    anchor: new google.maps.Point(0, 0) // anchor 
}; 

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(lat, lng), 
    map: map, 
    icon: icon 
}); 
+2

+1, to właśnie dla mnie zadziałało. – elrobis

+0

To jak to zrobić w API v3. –

+1

Działa, ale w ten sposób tracisz proporcje obrazu. –

55

Jak wymieniono w komentarzach, to jest aktualizowana rozwiązanie na korzyść Ikona obiektu z dokumentacją.

Zastosowanie Icon object

var icon = { 
    url: "../res/sit_marron.png", // url 
    scaledSize: new google.maps.Size(50, 50), // scaled size 
    origin: new google.maps.Point(0,0), // origin 
    anchor: new google.maps.Point(0, 0) // anchor 
}; 

posicion = new google.maps.LatLng(latitud,longitud) 
marker = new google.maps.Marker({ 
    position: posicion, 
    map: map, 
    icon: icon 
}); 
+0

Dzięki człowiek! docenione –

+11

MarkerImage jest przestarzałe: użyj obiektu ikona zamiast! – Bertaud

+8

To nie zmienia rozmiaru obrazu, ale przycina go? –

12

MarkerImage has been deprecated for Icon

Do wersji 3.10 API Google Maps JavaScript, złożone ikony zostały zdefiniowane jako obiekty MarkerImage. Literał obiektu Icon został dodany w 3.10 i zastępuje MarkerImage od wersji 3.11. Ikona Literały obiektów obsługują te same parametry, co MarkerImage, umożliwiając łatwą konwersję MarkerImage na ikonę poprzez usunięcie konstruktora , zawijanie poprzednich parametrów w {} i dodawanie nazw poszczególnych parametrów z .

kod Phillippe byłby teraz:

var icon = { 
    url: "../res/sit_marron.png", // url 
    scaledSize: new google.maps.Size(width, height), // size 
    origin: new google.maps.Point(0,0), // origin 
    anchor: new google.maps.Point(anchor_left, anchor_top) // anchor 
}; 

position = new google.maps.LatLng(latitud,longitud) 
marker = new google.maps.Marker({ 
    position: position, 
    map: map, 
    icon: icon 
}); 
+3

Myślę, że to nie zmienia rozmiaru obrazu, ale go przycina. –

+9

Chcesz 'scaledSize' zamiast' size'. – bbodenmiller

+0

Tak, zgadzam się z @bbodenmiller, scaledSize może być tym, którego szukasz. Do mojego projektu używam scaledSize i to działa dla mnie. var icon = {adres URL: imageName, scaledSize: new google.maps.Size (8, 12)}; – user908645

1

kompletny początkujący jak ja w temacie może trudniej wdrożyć jeden z tych odpowiedzi niż, jeśli w zasięgu Twoich możliwości, aby zmienić rozmiar obrazu samodzielnie z edytora on-line lub Photo Editor jak Photoshop.

Obraz 500 x 500 będzie większy na mapie niż obraz 50 x 50.

Nie wymaga programowania.

0

Delete pochodzenie i kotwica będzie bardziej regularny obrazowi

var icon = { 
     url: "image path", // url 
     scaledSize: new google.maps.Size(50, 50), // size 
    }; 

marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(lat, long), 
    map: map, 
    icon: icon 
}); 
Powiązane problemy