首页 / 浏览问题 / 其他 / 问题详情
iclient中百度地图的使用
185EXP 2018年06月16日

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iClient8CSP1/supermap_iclient_for_JavaScript_801_13225_1559/examples/examples.html#3baidu  示例程序中的这个例子,我这边改造了一下,
function addData(){
if(!dataAdded)
{
vector.removeAllFeatures();
//点对象
var point = new SuperMap.Geometry.Point(106.93357,27.73234);
point.transform(new SuperMap.Projection("EPSG:4326"),new SuperMap.Projection("EPSG:3857"));
var pointVector = new SuperMap.Feature.Vector(point);
pointVector.style={
fillColor:"red",
strokeColor:"yellow",
pointRadius:10
};

加上了点的转换,但是转换后和实际的位置相差太远,怎么才能把WGS84的经纬度坐标转换到这个地图上对应的坐标啊?

1个回答

您好,我看你代码的这个是把4326转成3857,但是你描述的意思是想把4326转成百度坐标系?如果是想转成百度坐标系的话转不了,百度坐标系是百度经过自己的偏移算法加密的,算法没有公开。
4,524EXP 2018年06月19日
public static void gcj02tobd09(double lng, double lat){
        double z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
        double theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
        double bd_lng = z * Math.cos(theta) + 0.0065;
        double bd_lat = z * Math.sin(theta) + 0.006;
        System.out.println(bd_lng+","+bd_lat);
        
    };
网上有个这样的转换公式,不过是用经纬度转换成经纬度的,没有用平面转平面的。我发的那个例子中是平面的坐标系,能把那个坐标系转换成经纬度的么?

无投影坐标系想转投影需要给数据配准,java这块我不熟,不太明白你这个java代码怎么跟js结合用,你还是描述下整体思路吧,我看看用不用找同事帮忙看下。

而且网上这个不一定正确,因为百度坐标系确实是保密的。

就是说现在那个例子上加载出来的地图的坐标是这一种的,能不能把这个地图在显示的时候转换成经纬的?

1.例子上百度地图上的坐标应该是百度坐标系的坐标而不是平面坐标

2.平面坐标转经纬度需要给底图进行配准,百度坐标系转其他投影坐标系无法实现,idesktop里也已经取消了对接百度地图的功能,因为百度坐标系保密

...