如何使用GWT Maps API将自定义标记图像添加到Google地图?

时间:2010-01-30 11:59:06

标签: gwt google-maps

我正在开发一款使用Google地图的GWT应用。我正在尝试向地图添加许多字母标记。最初,我有:

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

但那没用。对setImage的调用在maps API中引起了异常,并且没有在地图上显示任何内容。我搜索并找到了一些关于MarkerOptions的半答案,所以我尝试了:

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);

这更好一点,因为我的应用程序不再抛出异常而且我看到了标记阴影,但仍然没有自定义标记图像。

我更倾向于使用非JSNI解决方案解决此问题。

谢谢!

3 个答案:

答案 0 :(得分:10)

此示例似乎涵盖了您希望实现的目标: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));

现场演示可以在这里看到:http://gwt.google.com/samples/HelloMaps-1.0.4/HelloMaps.html#Creating%20Icons

答案 1 :(得分:2)

这是我的新工作解决方案(再次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);

答案 2 :(得分:-1)

这是我在3.10版本中的代码

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);