给你一个百度地图的封装类,希望对你有帮助。
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.Widget;
public class BaiduMapWidget extends Widget {
private JavaScriptObject map = null;
private String name; // 地图DIV层的id,全局唯一,不可重名
private String width;
private String height;
private double centerLat;
private double centerLng;
private int zoom = 15;
public BaiduMapWidget(String name, String width, String height, double lat, double lng, int zoom) {
Document doc = Document.get();
Element e = doc.createDivElement();
setElement(e);
setAttribute(e, "id", name);
this.name = name;
this.width = width;
this.height = height;
this.zoom = zoom;
this.centerLat = lat;
this.centerLng = lng;
}
public static native void setAttribute(Element elem, String attr, String value) /*-{
elem[attr] = value;
}-*/;
/*
* 私有JSNI函数 根据参数创建地图对象 name必须全局唯一
*/
private native JavaScriptObject create(String name, String mapWidth, String mapHeight, double lat, double lng, int zoom)/*-{
$wnd.markersArray = [];
var div = $doc.getElementById(name);
div.style.width = mapWidth;
div.style.height = mapHeight;
var mapJSO = new $wnd.BMap.Map(div);
mapJSO.addControl(new $wnd.BMap.NavigationControl()); //添加默认缩放平移控件
var point = new $wnd.BMap.Point(lng, lat);
mapJSO.centerAndZoom(point, zoom);
mapJSO.enableScrollWheelZoom();//启用滚轮放大缩小,默认禁用
mapJSO.enableContinuousZoom();//启用地图惯性拖拽,默认禁用
//var marker = new $wnd.BMap.Marker(point); // 创建标注
//mapJSO.addOverlay(marker); // 将标注添加到地图中
return (mapJSO);
}-*/;
public void setCenter(double lat, double lng, int zoom) {
this.setCenter(map, lat, lng, zoom);
}
public void getCity() {
this.getCity(map);
}
private native void getCity(JavaScriptObject map) /*-{
var point = new $wnd.BMap.Point(116.331398, 39.897445);
map.centerAndZoom(point, 12);
function myFun(result) {
var cityName = result.name;
map.setCenter(cityName);
}
var myCity = new $wnd.BMap.LocalCity();
myCity.get(myFun);
}-*/;
private native void setCenter(JavaScriptObject map, double lat, double lng, int zoom)/*-{
var point = new $wnd.BMap.Point(lng, lat);
map.centerAndZoom(point, zoom);
}-*/;
public JavaScriptObject addMarker(double lat, double lng) {
return this.addMarker(map, lat, lng);
}
;