前台方式
第一种方式:
1 var proj = new OpenLayers.Projection("EPSG:4326"); 2 var point = new OpenLayers.LonLat(-68, 42); 3 point.transform(proj, map.getProjectionObject());
第二种方式,通过替换坐标坐标进行实现
var point = new OpenLayers.Bounds(-68, 40, -88, 52) point .transform(proj, map.getProjectionObject());
转化后,定义地图坐标中心点位置使用setCenter方法
map.setCenter(point,4);//参数(转化后的坐标,地图显示层级)
后台
//经纬度转墨卡托 public Vector2D lonLat2Mercator(Vector2D lonLat) { Vector2D mercator = new Vector2D(); double x = lonLat.X * 20037508.34 / 180; double y = Math.Log(Math.Tan((90 + lonLat.Y) * Math.PI / 360)) / (Math.PI / 180); y = y * 20037508.34 / 180; mercator.X = x; mercator.Y = y; return mercator; } //墨卡托转经纬度 public Vector2D Mercator2lonLat(Vector2D mercator) { Vector2D lonLat = new Vector2D(); double x = mercator.X / 20037508.34 * 180; double y = mercator.Y / 20037508.34 * 180; y = 180 / Math.PI * (2 * Math.Atan(Math.Exp(y * Math.PI / 180)) - Math.PI / 2); lonLat.X = x; lonLat.Y = y; return lonLat; }