2010-01-30 12 views
6

Pracuję nad aplikacją GWT korzystającą z Map Google. Próbuję dodać wiele oznaczonych znaczników do mojej mapy. Pierwotnie miałem:Jak dodać niestandardowe obrazy znaczników do serwisu Mapy Google za pomocą interfejsu GWT Maps API?

Marker marker = new Marker(point); 
marker.setImage("http://www.google.com/mapfiles/markerA.png"); 
map.addOverlay(marker); 

Ale to nie zadziałało. Wywołanie setImage spowodowało wyjątek w API map i nic nie pokazało się na mapie. Szukałem i znalazłem kilka pół-odpowiedzi mówiące o MarkerOptions, więc próbowałem:

Icon icon = Icon.newInstance(Icon.DEFAULT_ICON); 
icon.setImageURL("http://www.google.com/mapfiles/markerA.png"); 
MarkerOptions ops = MarkerOptions.newInstance(icon); 
ops.setIcon(icon); 
Marker marker = new Marker(point, ops); 
map.addOverlay(marker); 

To było trochę lepiej, że moja aplikacja nie została rzucanie wyjątków już i byłem widząc cienie markera, ale nadal nie ma zdjęć zwyczaj obrysowe .

Wolałbym rozwiązanie inne niż JSNI od tego problemu.

Dzięki!

Odpowiedz

10

Ta próbka wydaje się obejmować to, co chcesz osiągnąć: IconDemo.java.

// Create our "tiny" marker icon 
Icon icon = Icon.newInstance(
    "http://labs.google.com/ridefinder/images/mm_20_red.png"); 
icon.setShadowURL("http://labs.google.com/ridefinder/images/mm_20_shadow.png"); 
icon.setIconSize(Size.newInstance(12, 20)); 
icon.setShadowSize(Size.newInstance(22, 20)); 
icon.setIconAnchor(Point.newInstance(6, 20)); 
icon.setInfoWindowAnchor(Point.newInstance(5, 1)); 

MarkerOptions options = MarkerOptions.newInstance(); 
options.setIcon(icon); 

// LatLng point; MapWidget map; 
map.addOverlay(new Marker(point, options)); 

Demo na żywo można zobaczyć tutaj: http://gwt.google.com/samples/HelloMaps-1.0.4/HelloMaps.html#Creating%20Icons

+0

Dziękuję bardzo za superszybką reakcję. To się udało. –

2

Oto mój nowy roztwór roboczy (thx ponownie igro):

Icon icon = Icon.newInstance("http://www.google.com/mapfiles/markerA.png"); 
icon.setIconSize(Size.newInstance(20, 34)); 
MarkerOptions ops = MarkerOptions.newInstance(icon); 
Marker marker = new Marker(point, ops); 
map.addOverlay(marker); 
-1

Oto mój kod w 3.10 Wersja

LatLng centerIcon = LatLng.newInstance(-25.90307367246304, -48.82550597190857); 
MarkerImage markerImage = MarkerImage.newInstance("http://someIcon.png"); 
MarkerOptions mOpts = MarkerOptions.newInstance(); 
mOpts.setIcon(markerImage); 
mOpts.setPosition(centerIcon); 

Marker marker = Marker.newInstance(mOpts); 
marker.setMap(mapWidget); 
+0

Czy możesz dodać tekst do swojej odpowiedzi wyjaśniając, czy to rozwiązuje całkowicie/częściowo pytanie OP? Jako takie nie jest dla mnie jasne. – kebs

Powiązane problemy