zoukankan      html  css  js  c++  java
  • 投影一个点

    摘自http://www.mapgx.com/Portal/api/JS/help/jssamples/util_project.html

    查看在线示例

    描述

    本例展示了如何用多个坐标系统查找一个点的坐标。在地图上单击一个点查看它的坐标(WGS 1984 Web Mercator投影坐标系统)。看到的这个坐标需要一个投影因为从鼠标单击得到的点的地理坐标(经度和纬度)。能够通过单击信息窗口上的按钮投影这个坐标回到地理坐标。

    投影使用 ArcGIS Server几何服务实现。这个服务类型是在ArcGIS Server 9.3增加的,可以用使用几何服务在JavaScript应用中缓冲,投影和简化几何体。这行代码创建了几何服务:

    gsvc = new esri.tasks.GeometryService("http://sampleserver1a.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer");

    能使用服务目录查出自己的几何服务的URL。由于服务的名称必须是Geometry,因此URL和这个极其相似。

    当单击点时间到的窗口是一个信息窗口。信息窗口通过InfoTemplate进行格式化,能够包含HTML,因此可以在信息窗口里面放置按钮。注意空的ID = 'latlong'的DIV被放在信息模板中。如果单击按钮将坐标转回经纬度,这个DIV被填充。

    代码
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
     2 <html>
     3   <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     5     <meta http-equiv="X-UA-Compatible" content="IE=7" />
     6   <title>Project a point</title>
     7 
     8   <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css">
     9   <script src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5" type="text/javascript"></script>
    10 
    11   <script type="text/javascript">
    12     dojo.require("esri.map");
    13     dojo.require("esri.tasks.geometry");
    14 
    15     var map = null;
    16     var gsvc = null;
    17     var pt = null;
    18 
    19     function initialize() {
    20       map = new esri.Map("map");
    21       var layer = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer");
    22       map.addLayer(layer);
    23       map.setExtent(new esri.geometry.Extent(-144.135847739521247.981485927970198-52.7645468200392468.8956865409582new esri.SpatialReference({wkid: 4326})));
    24 
    25       gsvc = new esri.tasks.GeometryService("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
    26       dojo.connect(map, "onClick", projectToWebMercator);
    27     }
    28 
    29     function projectToWebMercator(evt) {
    30       map.graphics.clear();
    31       var point = evt.mapPoint;
    32       var symbol = new esri.symbol.SimpleMarkerSymbol().setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_DIAMOND);
    33       var graphic = new esri.Graphic(point, symbol);
    34       var outSR = new esri.SpatialReference({ wkid: 102113});
    35       map.graphics.add(graphic);
    36 
    37       gsvc.project([ graphic ], outSR, function(features) {
    38         pt = features[0].geometry;
    39         graphic.setInfoTemplate(new esri.InfoTemplate("Coordinates",
    40           "<p>&nbsp;X: " + pt.x +
    41           "<br/>&nbsp;Y: " + pt.y +
    42           "</p>"  +
    43           "<input type='button' value='Convert back to LatLong' onclick='projectToLatLong();' />" +
    44           "<div id='latlong'></div>"));
    45         map.infoWindow
    46           .setTitle(graphic.getTitle())
    47           .setContent(graphic.getContent())
    48           .show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));
    49       });
    50     }
    51 
    52     function projectToLatLong() {
    53       var symbol = new esri.symbol.SimpleMarkerSymbol();
    54       var graphic = new esri.Graphic(pt, symbol);
    55       var outSR = new esri.SpatialReference({ wkid: 4326});
    56 
    57       gsvc.project([ graphic ], outSR, function(features) {
    58         pt = features[0].geometry;
    59         dojo.byId("latlong").innerHTML = "&nbsp;Latitude = " + pt.y + "<br/>&nbsp;Longitude = " + pt.x;
    60       });
    61     }
    62 
    63     dojo.addOnLoad(initialize);
    64   </script>
    65 
    66 </head>
    67 
    68 <body class="tundra">
    69   <b>Click a location on the map to Project from LatLng -> Web Mercator:</b>
    70   <div id="map" style="600px; height:400px; border:1px solid #000;"></div>
    71 </body>
    72 
    73 </html> 

  • 相关阅读:
    2016年会有感之测试解决方案
    APP测试走过的那些坑
    2016年终总结——测试基础篇(二)
    2016年终总结——测试基础篇(一)
    分享篇——我的Java学习路线
    selenium使用笔记(三)——元素定位
    selenium使用笔记(二)——Tesseract OCR
    selenium使用笔记(一)——selenium你该知道的
    对新手学习自动化的一些感想
    Maven的配置和使用(三)
  • 原文地址:https://www.cnblogs.com/skyapplezhao/p/2607875.html
Copyright © 2011-2022 走看看