首页 / 浏览问题 / 云GIS / 问题详情
js client 、方法无效?
91EXP 2017年03月14日

我通过iServer发布了第三方百度地图,然后参考JavaScriptAPI开发指南编写如下代码:

<!doctype html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="./assets/libs/sm/libs/SuperMap.Include.js"></script>
  <script type="text/javascript">
    <!--
    //声明变量map、layer、url
    var map, layer,
      url = "http://localhost:8090/iserver/services/map-world/rest/maps/World";
    //创建地图控件
    function init() {
      map = new SuperMap.Map("map");
      //创建分块动态REST图层,该图层显示iserver 8C 服务发布的地图,
      //其中"world"为图层名称,url图层的服务地址,{transparent: true}设置到url的可选参数
      layer = new SuperMap.Layer.TiledDynamicRESTLayer("地图", "http://localhost:8090/iserver/services/map-OSM/rest/maps/normal",
        null, {
          maxResolution: "auto"
        });
      layer.events.on({
        "layerInitialized": addLayer
      });
    }

    function addLayer() {
      //将Layer图层加载到Map对象上
      map.addLayer(layer);
      //出图,map.setCenter函数显示地图
      map.setCenter(new SuperMap.LonLat(100.104623,23.887861), 7);
    }
    //-->
  </script>
</head>

<body onload="init()">
  <div id="map" style="position:absolute;left:0px;right:0px;width:800px;height:500px;">
  </div>
</body>

</html>

地图是显示出来了,但是其中下面这段代码:

    function addLayer() {
      //将Layer图层加载到Map对象上
      map.addLayer(layer);
      //出图,map.setCenter函数显示地图
      map.setCenter(new SuperMap.LonLat(100.104623,23.887861), 7);
    }

中的setCenter,不管设置什么值都没有反应:

1个回答

http://localhost:8090/iserver/services/map-OSM/rest/maps

先浏览器访问这个地址,找到normal地图,点击旁边的浏览于for JavaScript,确认是否是你需要的地图
或者也可以f12查看网络请求,确认实际请求的地图服务地址

1,603EXP 2017年03月14日
地图是这个地图,我的问题是地图可以显示,但是怎么移动到目的地?使用setCenter方法地图没有动。

如果你是已知目的地的坐标的话,可以用map.panTo()方法

如果你是已知一个范围bounds的话可以用map.zoomToExtent()

    function addLayer() {
      //将Layer图层加载到Map对象上
      map.addLayer(layer);
      //出图,map.setCenter函数显示地图
      try {
      map.setCenter(new SuperMap.LonLat(100.104623,23.887861), 1);
      map.panTo(new SuperMap.LonLat(100.104623,23.887861));
      } catch(ex) {
        console.log(ex);
      }
    }

我代码修改如上,问题依旧。

请问你是什么坐标系的呢?如果你是墨卡托的话写经纬度坐标应该不行的
不知道啊,就是用iserver8c发布的
百度地图的是火星坐标系,接近于墨卡托,其实你设置setCenter其实是管用的,但是你设置坐标点(0,0),(100,100)是不明显的,你可以用map.getcenter()这个方法去获取地图的中心点,看是不是你之前设置的中心点。你如果只知道点的经纬度的话可以用lonlat.transform()转换坐标点再setCenter()。
多谢,就是这样,解决了。
...