使用来自GWT的Google Maps v3 DrawingManager
我正在从事一个项目,该项目使用GWT2.4和GWT-maps.jar创建一个MapWidget,并将其放置在一个带有各种控件的面板中。这一切都很好 我想让我的用户能够在地图上绘制多段线,并在多段线中使用getLength方法来确定绘制的多段线的长度。我以前在ActionScript中做过这件事,这让我有点头疼(特别是上次点击的点和鼠标之间的橡皮筋),我希望以后不要再这样做了 绘图管理器看起来可能非常适合(至少对于绘图部分而言),但它在API的v3中,gwt-maps.jar代码仅在v2中。因此,我想我可能会编写一些JavaScript,并使用JSNI从GWT调用,大致如下(在wibble.html-我的顶级html文件中): 然后(在Wobble.java中): 我已尝试传递MapWidget及其对等程序,但在这两种情况下,调用setMap时都会出现无效值错误 有人试过(并成功地)这么做吗?还是我找错了方向 谢谢使用来自GWT的Google Maps v3 DrawingManager,gwt,google-maps-api-3,Gwt,Google Maps Api 3,我正在从事一个项目,该项目使用GWT2.4和GWT-maps.jar创建一个MapWidget,并将其放置在一个带有各种控件的面板中。这一切都很好 我想让我的用户能够在地图上绘制多段线,并在多段线中使用getLength方法来确定绘制的多段线的长度。我以前在ActionScript中做过这件事,这让我有点头疼(特别是上次点击的点和鼠标之间的橡皮筋),我希望以后不要再这样做了 绘图管理器看起来可能非常适合(至少对于绘图部分而言),但它在API的v3中,gwt-maps.jar代码仅在v2中。因此,
因此首先,我只有GWT和GWT-JS通信方面的经验。不是谷歌API 现在: 看起来您正在将GWT对象(已编译的javscript对象)传递给DrawingManager。问题是DrawingManager API接收“漂亮的javascript对象”(而不是带有模糊方法的对象) 如果您想传递一个HTML元素是可以的(但是,您必须传递
widget.getElement()
,它实际上是一个
对象(通过示例)
解决方案
事实上,GMAPSAPI文档说你必须从GMAPAPI中传递一个映射对象。你用一个元素创建这个映射,这个元素就是画布
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
如果要将MapWidget用作地图画布,则可以使用其HTML元素
在GWT中:
private native void showIt(final MapWidget map) /*-{
$wnd.showDM(map.getElement()); // use mapwidget's element as canvas
}-*/;
在javascript中:
function showDM(canvasToUse) {
// TODO: define myOptions :)
var map = new google.maps.Map(canvasToUse, myOptions);
dM.setMap(map);
dM.setOptions({
drawingControl: true
});
免责声明
这只是基于我在GWT和JSNI方面的经验。我没有尝试过,也没有在GMAP或DrawingManager方面的经验。你应该检查一下我说的话,并告诉我是否幸运:)
希望有帮助 首先,我只有GWT和GWT-JS通信方面的经验。不是谷歌API 现在: 看起来您正在将GWT对象(已编译的javscript对象)传递给DrawingManager。问题是DrawingManager API接收“漂亮的javascript对象”(而不是带有模糊方法的对象) 如果您想传递一个HTML元素是可以的(但是,您必须传递
widget.getElement()
,它实际上是一个
对象(通过示例)
解决方案
事实上,GMAPSAPI文档说你必须从GMAPAPI中传递一个映射对象。你用一个元素创建这个映射,这个元素就是画布
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
如果要将MapWidget用作地图画布,则可以使用其HTML元素
在GWT中:
private native void showIt(final MapWidget map) /*-{
$wnd.showDM(map.getElement()); // use mapwidget's element as canvas
}-*/;
在javascript中:
function showDM(canvasToUse) {
// TODO: define myOptions :)
var map = new google.maps.Map(canvasToUse, myOptions);
dM.setMap(map);
dM.setOptions({
drawingControl: true
});
免责声明
这只是基于我在GWT和JSNI方面的经验。我没有尝试过,也没有在GMAP或DrawingManager方面的经验。你应该检查一下我说的话,并告诉我是否幸运:)
希望有帮助 我也一直在努力解决这个问题。问题在于,如果GWT制作了一个
MapWidget
,那么JavaScript就无法从中获取Map
。如果JavaScript制作了一个Map
,那么它就不能被GWT用作MapWidget
。我也一直在努力解决这个问题。问题在于,如果GWT制作了一个MapWidget
,那么JavaScript就无法从中获取Map
。而如果JavaScript生成一个Map
,那么GWT就不能将其用作MapWidget
。