javascript - 获取地址位置的几何图形

标签 javascript arcgis esri arcgis-js-api

如果我要搜索文本地址(假设地址是“305 Quincy St NE”),我将如何使用 ArcGIS API for Javascript 在 ArcGIS 中进行搜索?

我的目标是调用一个函数,该函数将一个地方的几何形状作为函数参数传递。

function showLocation(evt) {
    map.graphics.clear();
    var point = evt.result.feature.geometry; // how do I get this value from a textual address?
    .
    .
    .
}

最佳答案

使用 Locator类(class)。这是一个例子:

<!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>Using Locator to Find Address</title>
    <link rel="stylesheet" href="https://js.arcgis.com/3.14/esri/css/esri.css">
    <style>
      html, body, #map {
        height:100%;
        width:100%;
        margin:0;
        padding:0;
      }
      body {
        background-color:#FFF;
        overflow:hidden;
        font-family:"Trebuchet MS";
      }
      #search {
        display: block;
        position: absolute;
        z-index: 2;
        top: 20px;
        left: 75px;
      } 
    </style>

    <script src="https://js.arcgis.com/3.14/"></script>
    <script>
      var map;
      var locator;
      var symbol;
      var locatorUrl = "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer";
      require([
        "esri/map", "esri/tasks/locator", "esri/graphic",
        "esri/Color", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol",
        "dijit/form/TextBox", "dijit/registry", "dojo/on", "dojo/parser",
        "dojo/keys",
        "dojo/domReady!"
      ], function(
        Map, Locator, Graphic,
        Color, SimpleMarkerSymbol, SimpleLineSymbol,
        TextBox, registry, on, parser,
        keys
      ) {
        map = new Map("map",{
          basemap: "topo",
          center: [-117.19, 34.05],
          zoom: 13
        });

        locator = new Locator(locatorUrl);

        symbol = new SimpleMarkerSymbol(
            SimpleMarkerSymbol.STYLE_CIRCLE,
            20,
            new SimpleLineSymbol(
                SimpleLineSymbol.STYLE_SOLID,
                Color.fromHex("#EEAA00"),
                3),
            Color.fromHex("#002255")
        );        

        parser.parse();
        var box = registry.byId("textBox_address");
        on(box, "keypress", function (evt) {
            if (keys.ENTER == evt.keyCode) {
                var addressText = box.get("value");

                //This is the important part. Call Locator.addressToLocations.
                locator.addressToLocations({
                    address: {
                        SingleLine: addressText
                    }
                }, function (addresses) {
                    //Success
                    if (0 == addresses.length) {
                        alert("Address not found");
                    } else {
                        var address = addresses[0];
                        var pt = address.location;
                        map.graphics.clear();
                        map.graphics.add(new Graphic(pt, symbol));
                        map.centerAt(pt);
                    }
                }, function (error) {
                    //Failure
                    alert("Error: " + error);
                });
            }
        });
      });
    </script>
  </head>
  <body>
    <div id="search">
        <label for="firstname" style="background-color: white">Address:</label>
        <input type="text" name="textBox_address" value="808 Travis St, Houston TX"
            data-dojo-type="dijit/form/TextBox" id="textBox_address" />
    </div>
    <div id="map"></div>
  </body>
</html>

关于javascript - 获取地址位置的几何图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720029/

相关文章:

javascript - 在页面加载时隐藏菜单,需要在单击超链接时填充

java - 使用 ESRI android API 打开文件地理数据库

apache-flex - ArcGIS Flex API : Convert a screen point to a MapPoint

javascript - 通俗地理解异步代码

javascript - 使用 SVG 作为渲染器的 GUI 库?

javascript - 使用 Select2 从服务器检索 JSON

javascript - 添加要素图层会挂起浏览器

python - 如何在 Python 中组合相似特征的属性

arcgis - 如何将 "Supports Statistics"设置为 True

javascript - 4 次查询后更新 Dojo 图表