现在的位置: 首页 > 综合 > 正文

国家天地图API 创建面 覆盖物

2018年02月18日 ⁄ 综合 ⁄ 共 3274字 ⁄ 字号 评论关闭

创建已知坐标面

html代码:

<div style="position: absolute; float: left; margin-left: 5%; margin-top: 1%; z-index: 500;">
        <input type="button" onclick="vector()" value="矢 量" />
        <input type="button" onclick="satellite()" value="影 像" />
        <input type="button" onclick="hybrid()" value="混 合" />
    </div>
    <div id="mapDiv" style="position: absolute; width: 99%; height: 99%">
    </div>

javascript代码:

<script src="JScript/jquery1.7.2.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="http://api.tianditu.com/js/maps.js"></script>
    <script type="text/javascript">
        var map, zoom = 18, infoWin, polygon, centerPoint, maxPoint;
        var maxPointLat, minPointLat, maxPointLng, minPointLng;
        function onLoad() {
	//关键的点集合
            var points = [];
            points.push(new TLngLat(104.06027, 30.65958));
            points.push(new TLngLat(104.06113, 30.66043));
            points.push(new TLngLat(104.06137, 30.65954));
            points.push(new TLngLat(104.06042, 30.65887));
	//获取多边形的最中心点的坐标 new TLngLat(lng, lat)

            maxPointLat = points[0].getLat();
            minPointLat = points[0].getLat();
            for (var i = 0; i < points.length; i++) {
                if (maxPointLat <= points[i].getLat()) {
                    maxPointLat = points[i].getLat();
                    maxPoint = points[i];
                }
                else if (minPointLat >= points[i].getLat()) {
                    minPointLat = points[i].getLat();
                }
            }

            maxPointLng = points[0].getLng();
            minPointLng = points[0].getLng();
            for (var i = 0; i < points.length; i++) {
                if (maxPointLng <= points[i].getLng()) {
                    maxPointLng = points[i].getLng();
                }
                else if (minPointLng >= points[i].getLng()) {
                    minPointLng = points[i].getLng();
                }
            }
            var lat = minPointLat + (maxPointLat - minPointLat) / 2;
            var lng = minPointLng + (maxPointLng - minPointLng) / 2;
            map = new TMap("mapDiv");
            map.centerAndZoom(new TLngLat(lng, lat), zoom);
            map.enableHandleMouseScroll();


            polygon = new TPolygon(points, { strokeColor: "blue", strokeWeight: 6, strokeOpacity: 0.5, fillOpacity: 0.5 });
            map.addOverLay(polygon);
            TEvent.addListener(polygon, "click", onClick);

            ShowInfoWindow();
        }

        function onClick() {
            infoWin.closeInfoWindow();
            ShowInfoWindow();
        }

	//单机显示相关信息 类似于ArcGIS Server的InfoWindow
        function ShowInfoWindow() {
            var html = [];
            html.push('<div id="div" style="width: 300px; height: 150px; ">');
            html.push('<table style="  border-collapse: separate; border-spacing: 10px;font-size:14px;margin-top:-10px;">');
            html.push('<tr><td><center style=" font-weight:bold;text-align:left;">地址:</center></td><td style="text-align:left;">四川省成都市天府广场</td></tr>');
            html.push('<tr><td><center style=" font-weight:bold;text-align:left;">类型:</center></td><td>承包地</td></tr>');
            html.push('<tr><td><center style=" font-weight:bold;text-align:left;">面积:</center></td><td>880亩</td></tr>');
            html.push('<tr><td><center style=" font-weight:bold;text-align:left;">价格:</center></td><td>120000元</td></tr>');
            html.push('<tr><td><center style=" font-weight:bold;text-align:left;">产权人:</center></td><td>成都市政府</td></tr>');
            html.push('<tr><td><center style=" font-weight:bold;text-align:left;">联系电话:</center></td><td>12306</td></tr>');
            html.push('</table>');
            html.push('</div>');

            infoWin = new TInfoWindow(maxPoint, new TPixel(9, 27));
            infoWin.setOffset(new TPixel(0, 0));
            infoWin.setLabel(html.join(' '));
            map.addOverLay(infoWin);

            var top = $("#div").offset().top;
            if (top < 0) {
                map.panBy(new TSize(0, -50 + top));
            }
        }
	
	//下面三个方法是对不同底图的调用
        function satellite() {
            map.setMapType(TMAP_SATELLITE_MAP);
        }
        function vector() {
            map.setMapType(TMAP_NORMAL_MAP);
        }
        function hybrid() {
            map.setMapType(TMAP_HYBRID_MAP);
        }
    </script>

后端只需要将数据传过来进行循环来添加到points数组中

效果图如下:

至于这句代码,详情请看国家天地图API 创建点 覆盖物最后面

var top = $("#div").offset().top;
            if (top < 0) {
                map.panBy(new TSize(0, -50 + top));
            }

抱歉!评论已关闭.