arcgis js 简单示例

14 篇文章 0 订阅
1 篇文章 0 订阅

4+版本

参考文档

https://developers.arcgis.com/labs/javascript/display-point-line-and-polygon-graphics/
http://desktop.arcgis.com/zh-cn/arcmap/latest/get-started/main/get-started-with-arcmap.htm

基本型

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.13/esri/themes/light/main.css">
  	<script src="https://js.arcgis.com/4.13/"></script>
    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
  <script>
  require([
      "esri/Map",
      "esri/views/MapView"
    ], function(Map, MapView) {

    var map = new Map({
      basemap: "topo-vector"
    });

    var view = new MapView({
      container: "viewDiv",
      map: map,
      center: [-118.80500, 34.02700], // longitude, latitude
      zoom: 13
    });
    
  });
  </script>  
</html>

在这里插入图片描述

添加点线面

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.13/esri/themes/light/main.css">
  	<script src="https://js.arcgis.com/4.13/"></script>
    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
  <script>
  require([
      "esri/Map",
      "esri/views/MapView",
      "esri/Graphic",
      "esri/layers/GraphicsLayer"
    ], function(Map, MapView, Graphic, GraphicsLayer) {

    var map = new Map({
      basemap: "topo-vector"
    });

    var view = new MapView({
      container: "viewDiv",
      map: map,
      center: [-118.80657463861, 34.0005930608889], // longitude, latitude
      zoom: 13
    });
    
    var graphicsLayer = new GraphicsLayer();
    map.add(graphicsLayer);
    
    //点
		var point = {
         type: "point",
         longitude: -118.80657463861,
         latitude: 34.0005930608889
       };

       var simpleMarkerSymbol = {//设置样式
         type: "simple-marker",
         color: [226, 119, 40],  // orange
         outline: {
           color: [255, 255, 255], // white
           width: 1
         }
       };

       var pointGraphic = new Graphic({
         geometry: point,
         symbol: simpleMarkerSymbol
       });

       graphicsLayer.add(pointGraphic);    
    
 
 //------------
 //线
        var simpleLineSymbol = {
         type: "simple-line",
         color: [226, 119, 40], // orange
         width: 2
       };

       var polyline = {
         type: "polyline",
         paths: [
           [-118.821527826096, 34.0139576938577],
           [-118.814893761649, 34.0080602407843],
           [-118.808878330345, 34.0016642996246]
         ]
       };

       var polylineGraphic = new Graphic({
         geometry: polyline,
         symbol: simpleLineSymbol
       })

       graphicsLayer.add(polylineGraphic);
 
 //面
 
        var polygon = {
         type: "polygon",
         rings: [
           [-118.818984489994, 34.0137559967283],
           [-118.806796597377, 34.0215816298725],
           [-118.791432890735, 34.0163883241613],
           [-118.79596686535, 34.008564864635],
           [-118.808558110679, 34.0035027131376]
         ]
       };

       var simpleFillSymbol = {
         type: "simple-fill",
         color: [227, 139, 79, 0.8],  // orange, opacity 80%
         outline: {
           color: [255, 255, 255],
           width: 1
         }
       };

       var polygonGraphic = new Graphic({
         geometry: polygon,
         symbol: simpleFillSymbol
       });

       graphicsLayer.add(polygonGraphic);
  });
  </script>  
</html>

在这里插入图片描述

添加多个点

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.13/esri/themes/light/main.css">
  	<script src="https://js.arcgis.com/4.13/"></script>
    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
  <script>
  require([
      "esri/Map",
      "esri/views/MapView",
      "esri/Graphic",
      "esri/layers/GraphicsLayer"
    ], function(Map, MapView, Graphic, GraphicsLayer) {

    var map = new Map({
      basemap: "topo-vector"
    });

    var view = new MapView({
      container: "viewDiv",
      map: map,
      center: [-118.80657463861, 34.0005930608889], // longitude, latitude
      zoom: 12
    });
    
    var graphicsLayer = new GraphicsLayer();
    map.add(graphicsLayer);
    
    //点
		var point = {
         type: "point",
         longitude: -118.80657463861,
         latitude: 34.0005930608889
       };
       
       var point2 = {
         type: "point",
         longitude: -119.00657463861,
         latitude: 34.0005930608889
       };

       var simpleMarkerSymbol = {
         type: "simple-marker",
         color: [226, 119, 40],  // orange
         outline: {
           color: [255, 255, 255], // white
           width: 1
         }
       };

       var pointGraphic = new Graphic({
         geometry: point,
         symbol: simpleMarkerSymbol
       });

       graphicsLayer.add(pointGraphic);    
       
       graphicsLayer.add(new Graphic({
         geometry: point2,
         symbol: simpleMarkerSymbol
       }));    
       
 
 //------------
 
  });
  </script>  
</html>

点击后弹出自定义提示框

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.13/esri/themes/light/main.css">
  	<script src="https://js.arcgis.com/4.13/"></script>
    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
  <script>
  require([
      "esri/Map",
      "esri/views/MapView",
      "esri/Graphic",
      "esri/layers/GraphicsLayer"
    ], function(Map, MapView, Graphic, GraphicsLayer) {

    var map = new Map({
      basemap: "topo-vector"
    });

    var view = new MapView({
      container: "viewDiv",
      map: map,
      center: [-118.80657463861, 34.0005930608889], // longitude, latitude
      zoom: 12
    });
    
    var graphicsLayer = new GraphicsLayer();
    map.add(graphicsLayer);
    
    //点
	var point = {
        type: "point",
        longitude: -118.80657463861,
        latitude: 34.0005930608889
    };

    var simpleMarkerSymbol = {
        type: "simple-marker",
        color: [226, 119, 40],  // orange
        outline: {
          color: [255, 255, 255], // white
          width: 1
        }
    };

      //*** ADD ***//
      // Create attributes
    var attributes = {
        Name: "My point",  // The name of the
        Location: " Point Dume State Beach",  // The owner of the
    };
      // Create popup template
    var popupTemplate = {
        title: "{Name}",
        content: "I am located at <b>{Location}</b>."
    };

    var pointGraphic = new Graphic({
        geometry: point,
        symbol: simpleMarkerSymbol,
         
        attributes: attributes,
        popupTemplate: popupTemplate
    });
       
    graphicsLayer.add(pointGraphic);    
        
  });
  </script>
</html>

在这里插入图片描述
这里用到了一个挺奇怪的语法

    var attributes = {
        Name: "My point",  // The name of the
        Location: " Point Dume State Beach",  // The owner of the
    };

相当于临时定义了一个数据字典,在popupTemplate中,括号内的部分会按照attributes 中设定的值进行替换。也就是说,直接设置成这样也是可以的

    var popupTemplate = {
        title: "My point111",
        content: "I am located at <b> Point Dume State Beach222</b>."
    };

    var pointGraphic = new Graphic({
        geometry: point,
        symbol: simpleMarkerSymbol,
         
        //attributes: attributes,
        popupTemplate: popupTemplate
    });

自定义点图标与位置标签

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.13/esri/themes/light/main.css">
  	<script src="https://js.arcgis.com/4.13/"></script>
    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
  <script>
  require([
      "esri/Map",
      "esri/views/MapView",
      "esri/Graphic",
      "esri/layers/GraphicsLayer"
    ], function(Map, MapView, Graphic, GraphicsLayer) {

    var map = new Map({
      basemap: "topo-vector"
    });

    var view = new MapView({
      container: "viewDiv",
      map: map,
      center: [-118.80657463861, 34.0005930608889], // longitude, latitude
      zoom: 12
    });
    
    var graphicsLayer = new GraphicsLayer();
    map.add(graphicsLayer);
    
      // Add a blue location pin
      var pictureGraphic = new Graphic({
        geometry: {
          type: "point",
          longitude: -118.80657463861,
          latitude: 34.0005930608889
        },
        symbol: {
          type: "picture-marker",
          url: "num_1.png",//图片地址
          width: "18px",
          height: "18px"
        }
      });

      graphicsLayer.add(pictureGraphic);

     // Add text below the pin
     var textGraphic = new Graphic({
       geometry: {
         type: "point",
          longitude: -118.80657463861,
          latitude: 34.0005930608889
       },
       symbol: {
          type: "text",
          color: [25,25,25],//字颜色
          haloColor: [255,255,255],//字边框颜色
          haloSize: "1px",
          text: "This is my location!",
          xoffset: 0,//与坐标的x轴偏移
          yoffset: -25,//与坐标的y轴偏移
          font: {
            size: 12
         }
       }
     });

     graphicsLayer.add(textGraphic);  
        
  });
  </script>
</html>

在这里插入图片描述可以看出,这是用两个对象分别实现的,即通过symbol的type属性来区分标记的类型。

3+版本

https://developers.arcgis.com/javascript/3/
还是要吐槽一下3版本的官方文档,对web开发真的很不友好,找点api真叫一个累。不过相关的博客文章到是有很多。

添加点及弹出信息框

<!DOCTYPE html>
<html>
<!--
参考文章
https://blog.csdn.net/idomyway/article/details/84798010
-->
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
		<title>Tiled map service</title>

		<link rel="stylesheet" href="http://127.0.0.1:8020/arcgis_js_v318_api/arcgis_js_api/library/3.18/3.18/esri/css/esri.css">

		<style>
			html,
			body,
			#map {
				height: 100%;
				width: 100%;
				margin: 0;
				padding: 0;
			}
		</style>

		<script src="http://127.0.0.1:8020/arcgis_js_v318_api/arcgis_js_api/library/3.18/3.18/init.js"></script>

		<script>
			var map;
			var td;

			require(["esri/map",
			"esri/InfoTemplate",
			"esri/symbols/PictureMarkerSymbol",
			"dojo/on",
			"esri/Color",
			"dojo/query",
			"esri/geometry/Point",
			"esri/geometry/Polyline",
			        "esri/symbols/SimpleMarkerSymbol",
            		"esri/symbols/SimpleLineSymbol",
            		"esri/symbols/SimpleFillSymbol",
					"esri/toolbars/draw",
					"esri/symbols/SimpleMarkerSymbol",
					"esri/layers/ArcGISTiledMapServiceLayer",
					"esri/layers/ArcGISDynamicMapServiceLayer",
					"esri/graphic",
					"esri/layers/GraphicsLayer",
					"dojo/domReady!"
				],
				function(
					Map,
InfoTemplate,
PictureMarkerSymbol,					
on,
Color,
query,
Point,
Polyline,
					SimpleMarkerSymbol,
					SimpleLineSymbol,
					SimpleFillSymbol, 
					Draw, 
					SimpleMarkerSymbol, 
					ArcGISTiledMapServiceLayer, 
					ArcGISDynamicMapServiceLayer, 
					Graphic, 
					GraphicsLayer, 
					QueryTask) {
					var map = new Map("map", {
				      //basemap: "streets",
				      center: [123.415, 41.65],
				      zoom: 5,
				      
				      showAttribution: false
				    });
					//地图服务
					var tiled = new ArcGISTiledMapServiceLayer("http://11.22.33.44:9898/test/arcgis/rest/services/MapServer?Authorization=Basic TUtMWUzYTViYzY0NWQwOmM5N2M0MjM2Mzd");
					map.addLayer(tiled);
            
            map.on("load", function(featureSet) {
            	
            	
					 simpleMarkerSymbol = new PictureMarkerSymbol({
		        	    "url":"num_1.png",//本地图片地址
		        	    "height":15,
		        	    "width":20,
		        	    "type":"esriPMS",
		        	    "angle": 0,
		        	  });
            	
            	
            	//创建客户端图层
	            var graphicsLayer=new GraphicsLayer();
	            //将客户端图层添加到地图中
	            map.addLayer(graphicsLayer);
	            
                var geometry=new Point({
                    "x": 123.415,
                    "y": 41.65
                });
                
                var graphic=new Graphic(geometry,pSymbol);
                
                
                graphic.setSymbol(simpleMarkerSymbol);
                
//          map.on("click", function(evt) {
//			  
//			});

	            var infoTemplate = new InfoTemplate("标题信息",
	                "<p>FID:111</p>" +	//html代码
	                "<p>NAME:222</p>" +
	                "<p>address:333</p>"
	            );
                
                graphicsLayer.add(graphic);
                graphicsLayer.setInfoTemplate(infoTemplate);

			});
            
            
            map.on("zoom-end", function(params){//缩放事件
            	console.log(params);
            	console.log(params.level);
            	console.log(params.anchor);
            	
            	console.log(map);
            });
            
            



				//end
				}
			);
		</script>
	</head>

	<body>
		<div id="map"></div>
	</body>
	<script type="text/javascript">
		
	</script>

</html>

在这里插入图片描述

绘制热力图

主要参考的这篇文章
https://www.jianshu.com/p/3b36a05872e2
里面写的很详细,只是代码不够纯净,我又扒了一份。

还是要说一句官方文档,我已经把所有热力图相关的文档都看一了遍,如果不是看了上面那篇文章,我是怎么也想不到esri.layers.FeatureLayer对象是可以往里添加点的。

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
		<title>Tiled map service</title>
		<link rel="stylesheet" href="http://127.0.0.1:8020/arcgis_js_v318_api/arcgis_js_api/library/3.18/3.18/esri/css/esri.css">
		<style>
			html,
			body,
			#map {
				height: 100%;
				width: 100%;
				margin: 0;
				padding: 0;
			}
		</style>

		<script src="http://127.0.0.1:8020/arcgis_js_v318_api/arcgis_js_api/library/3.18/3.18/init.js"></script>
		<script>
			var map;
			var td;

			require(["esri/map",
					"esri/renderers/HeatmapRenderer",
					"esri/InfoTemplate",
					"esri/symbols/PictureMarkerSymbol",
					"dojo/on",
					"esri/Color",
					"dojo/query",
					"esri/geometry/Point",
					"esri/geometry/Polyline",
					"esri/symbols/SimpleMarkerSymbol",
					"esri/symbols/SimpleLineSymbol",
					"esri/symbols/SimpleFillSymbol",
					"esri/toolbars/draw",
					"esri/symbols/SimpleMarkerSymbol",
					"esri/layers/ArcGISTiledMapServiceLayer",
					"esri/layers/ArcGISDynamicMapServiceLayer",
					"esri/graphic",
					"esri/layers/GraphicsLayer",
					"dojo/domReady!"
				],
				function(
					Map,
					HeatmapRenderer,
					InfoTemplate,
					PictureMarkerSymbol,
					on,
					Color,
					query,
					Point,
					Polyline,
					SimpleMarkerSymbol,
					SimpleLineSymbol,
					SimpleFillSymbol,
					Draw,
					SimpleMarkerSymbol,
					ArcGISTiledMapServiceLayer,
					ArcGISDynamicMapServiceLayer,
					Graphic,
					GraphicsLayer,
					QueryTask) {
					var map = new Map("map", {
						//basemap: "streets",
						center: [123.415, 41.65],
						zoom: 5,

						showAttribution: false
					});
					//地图服务
					var tiled = new ArcGISTiledMapServiceLayer("http://11.22.33.44:9898/arcgis/rest/services/MapServer?Authorization=Basic NTUtMWUzYTViYzY0NWQwOmMzdlMDBhOWZlMWY4QxMTQzMWNl");
					map.addLayer(tiled);

					map.on("load", function(featureSet) {

						var layerDefinition = {
							"geometryType": "esriGeometryPoint",
							"fields": [{
								"name": "num",
								"type": "esriFieldTypeInteger",
								"alias": "num"
							}]
						}
						var featureCollection = {
							layerDefinition: layerDefinition,
							featureSet: null
						};
						//创建FeatureLayer图层
						var featureLayer = new esri.layers.FeatureLayer(featureCollection, {
							mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
							outFields: ["*"],
							opacity: 1
						});

						var heatmapRenderer = new HeatmapRenderer({
							field: "num",
							colors: ["rgba(255, 0, 0, 0)", "rgb(0, 255, 0)", "rgb(255, 255, 0)", "rgb(255, 0, 0)"],
							blurRadius: 12,
							// maxPixelIntensity: 20,
							// minPixelIntensity: 2
						});
						featureLayer.setRenderer(heatmapRenderer); //heatmapRendererhtml中创建的渲染器
						map.addLayer(featureLayer);

						//随便添加3条测试数据
						var point = new esri.geometry.Point(123.415, 41.65, new esri.SpatialReference({
							wkid: 4326//没看出有什么用,先放着了
						})); //初始化起点
						var graphic = new esri.Graphic(point);
						graphic.setAttributes({
							"num": 123//点的权重
						});
						featureLayer.add(graphic);
						
						point = new esri.geometry.Point(123.615, 41.65, new esri.SpatialReference({
							wkid: 4326
						})); //初始化起点
						graphic = new esri.Graphic(point);
						graphic.setAttributes({
							"num": 12
						});
						featureLayer.add(graphic);
						
						point = new esri.geometry.Point(123.515, 41.75, new esri.SpatialReference({
							wkid: 4326
						})); //初始化起点
						graphic = new esri.Graphic(point);
						graphic.setAttributes({
							"num": 432
						});
						featureLayer.add(graphic);
						

					});

					//end
				}
			);
		</script>
	</head>

	<body>
		<div id="map"></div>
	</body>
	<script type="text/javascript">
	</script>

</html>

在这里插入图片描述

js弹出指定点的信息框

通过js弹出指定Graphic对象的InfoTemplate信息。本来想着触发Graphic的click事件来实现的,但是并没有找到相应的api。
于是换了一种方式,通过infoWindow来模拟出Graphic点击后的样子。infoWindow可以设置出现位置,并且在出现时,会顶替掉Graphic的InfoTemplate。

相关方法代码

var pt = new esri.geometry.Point(123, 41, map.spatialReference);//创建点对象
map.centerAt(pt);//对地图中心进行重新定位//graphic.geometry
map.infoWindow.setTitle("标题信息");//graphic.getTitle()
map.infoWindow.setContent("html格式 内容代码");//graphic.getContent()

map.infoWindow.show(pt, map.getInfoWindowAnchor(pt));//显示信息
//map.infoWindow.hide();//隐藏信息

还需要一种方式去存储地图上所有点的坐标与详情信息,很简单不写了。

弹出多个信息框

依然没有找到相关api,只能使用其他方法来实现了。
先随便写一个有弹出框的页面

在这里插入图片描述
然后观察地图渲染后的js源码。
在这里插入图片描述
其中,蓝色底色的部分即是信息框的代码,并且可以得知arcgis是通过其中的left,top属性来定位的。
现在需要做的就是,把自定义的弹窗代码加入到map_root下,并动态的进行定位。前者可以通过jquery轻松实现,后者需要用到这个api—map.toScreen(new esri.geometry.Point(lng, lat)); 。这会把地理坐标转换为浏览器坐标。当拖动地图时,也需要重新定位,会用到这几个事件

				//地图边缘改变
				map.on('extent-change', function (e) {
                	
                });
                //鼠标拖拽
	            map.on('mouse-drag', function (e) {
                	
                });
                //鼠标滚轮
                map.on('mouse-wheel', function (e) {
                	
                });

理论上来说mouse-drag应该能处理好拖拽时的变化,但是实际上显示会出现bug,我后面的代码里没有使用。这也导致了只有在鼠标拖拽完成之后,才会重新对弹窗进行定位。

完整代码

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
		<title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
		<link rel="stylesheet" href="https://js.arcgis.com/3.31/esri/css/esri.css">
		<script src="https://js.arcgis.com/3.31/"></script>
		<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
		<style>
			html,
			body,
			#viewDiv {
				padding: 0;
				margin: 0;
				height: 100%;
				width: 100%;
			}
		</style>
	</head>

	<body>
		<div id="map"></div>
		
<div id="custom_window_info_template" style="display: none;">
<div id="custom_position" class="esriPopup esriPopupVisible custom_" style="z-index: 40; left: 683px; top: 398px;">
	<div class="esriPopupWrapper" style="position: absolute; left: 16px; top: -29px;">
		<div class="sizer">
			<div class="titlePane" style="user-select: none;">
				<div class="spinner hidden" title="正在搜索..."></div>
				<div id="custom_title" class="title">title 内容</div>
				<div class="titleButton prev hidden" title="上一个要素"></div>
				<div class="titleButton next hidden" title="下一个要素"></div>
				<div class="titleButton maximize hidden" title="最大化"></div>
				<div class="titleButton close hidden" title="关闭"></div>
			</div>
		</div>
		<div class="sizer content">
			<div id="custom_content" class="contentPane">html 格式内容</div>
		</div>
		<div class="sizer">
			<div class="actionsPane">
				<div class="actionList hidden">
					<!--
					<a title="缩放至" class="action zoomTo" href="javascript:void(0);"><span>缩放至</span></a>
					 -->
				</div>
			</div>
		</div>
		<div class="pointer"></div>
	</div>
	<div class="outerPointer left"></div>
</div>		
		
	</body>
	<script>
		require(["esri/map",
			"esri/geometry/Point"
		], function(Map,
			Point) {
			var map = new Map("map", {
				center: [-118, 34.5],
				zoom: 8,
				basemap: "topo"
			});
			
			map.on("load", function(featureSet) {
//				var pt = new Point(-118, 34.5);
//				map.infoWindow.setTitle("title");
//				map.infoWindow.setContent(
//					"html"
//				);
//				map.infoWindow.show(pt, map.getInfoWindowAnchor(pt));
				
				jQuery("#map_root").append("<div id=\"mapInfo\"></div>");
				
				var customWindowInfo = function(title, content, lng, lat){
					jQuery("#custom_window_info_template #custom_position").attr("lng", lng);
					jQuery("#custom_window_info_template #custom_position").attr("lat", lat);
					jQuery("#custom_window_info_template #custom_title").html(title);
					jQuery("#custom_window_info_template #custom_content").html(content);
					var tempSc = map.toScreen(new esri.geometry.Point(lng, lat));
					jQuery("#custom_window_info_template #custom_position").css("left", tempSc.x + "px");
					jQuery("#custom_window_info_template #custom_position").css("top", tempSc.y + "px");
					
					jQuery("#mapInfo").append(jQuery("#custom_window_info_template #custom_position").prop("outerHTML"));
				};
				
				customWindowInfo("title title", "content content", -118, 34.5);
				customWindowInfo("title title", "content content222", -118, 34.8);
				
	            map.on('extent-change', function (e) {
                	reChangeCustomWindow();
                });
	            map.on('mouse-drag', function (e) {
                	//reChangeCustomWindow();
                });
                map.on('mouse-wheel', function (e) {
                	reChangeCustomWindow();
                });
                
                reChangeCustomWindow = function(){
                	jQuery("#mapInfo").find(".custom_").each(function(i){
	            		
	            		var obj = jQuery(this);
	            		var lng = obj.attr("lng");
	            		var lat = obj.attr("lat");
	            		
	            		var tempLocation = map.toScreen(new esri.geometry.Point(lng, lat));
	            		
	            		obj.css("left", tempLocation.x);
	            		obj.css("top", tempLocation.y);
	            	});
                };
			});

		});
	</script>

</html>
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值