`

使用arcgis查询附近的景点名称

阅读更多

Arcgis 有自己单独的API可以查询某一点附近的景点或餐饮。

 

该技术博文属于原创,转载请注明出处:http://www.pm-road.com/index.php/2015/01/21/349/

先说一下功能,就是在点击地图的时候,在该点标记出本身的位置,然后,在半径1000m之内,查询出附近的景点名称。

实现方法:1:对地图进行绑定单击事件;

2:得到单点事件的坐标点;

3:添加覆盖物;

4:进行后台查询;

5:将查询结果,在地图上进行点标记;

 

 

代码:

mapObj.on(“click”, addPoints);//mapObj为arcgis 的地图对象;addPoints为函数;

function addPoints(map) {
    var mapPoint = map.mapPoint;
    var x = mapPoint.x;// 102100系
    var y = mapPoint.y;// 102100系
    mapObj.graphics.clear();
    var xqdR = $(“#xqdR”).val();//在页面上得到半径
    addMarker_my(x, y);//添加点标记
    require(
            [ “esri/map”, “esri/layers/FeatureLayer”, “esri/tasks/query”,
                    “esri/geometry/Circle”, “esri/graphic”,
                    “esri/InfoTemplate”, “esri/symbols/SimpleMarkerSymbol”,
                    “esri/symbols/SimpleLineSymbol”,
                    “esri/symbols/SimpleFillSymbol”,
                    “esri/renderers/SimpleRenderer”, “esri/config”,
                    “esri/Color”, “dojo/dom”, “dojo/domReady!” ],
            function(Map, FeatureLayer, Query, Circle, Graphic, InfoTemplate,
                    SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol,
                    SimpleRenderer, esriConfig, Color, dom) {
                try {
                    // esriConfig.defaults.io.proxyUrl = “/proxy/”;
                    esri.config.defaults.io.corsDetection = false;

                    var prourl = “”;
                    if (interestType == “餐饮”) {
                        prourl = arcgisserverurl
                                + “ArcGIS/rest/services/HNBASE1129/MapServer/39″;
                    } else if (interestType == “酒店”) {
                        prourl = arcgisserverurl
                                + “ArcGIS/rest/services/HNBASE1129/MapServer/130″;
                    } else {// (interestType == “景点”)
                        prourl = arcgisserverurl
                                + “ArcGIS/rest/services/HNBASE1129/MapServer/116″;
                    }
                    featureLayer = new FeatureLayer(prourl,
                            {
                                infoTemplate : new InfoTemplate(
                                        “Block: ${Name}”, “${*}”),
                                outFields : [ “Name”, “Name_PY”, “Address”,
                                        “Telephone” ]
                            });

                    var symbol = new SimpleMarkerSymbol(
                            SimpleMarkerSymbol.STYLE_CIRCLE, 12,
                            new SimpleLineSymbol(SimpleLineSymbol.STYLE_NULL,
                                    new Color([ 247, 34, 101, 0.9 ]), 1),
                            new Color([ 207, 34, 171, 0.5 ]));
                    featureLayer.setSelectionSymbol(symbol);

                    // make unselected features invisible
                    var nullSymbol = new SimpleMarkerSymbol().setSize(0);
                    featureLayer.setRenderer(new SimpleRenderer(nullSymbol));

                    mapObj.addLayer(featureLayer);

                    var circleSymb = new SimpleFillSymbol(
                            SimpleFillSymbol.STYLE_NULL, new SimpleLineSymbol(
                                    SimpleLineSymbol.STYLE_SHORTDASHDOTDOT,
                                    new Color([ 105, 105, 105 ]), 2),
                            new Color([ 255, 255, 0, 0.25 ]));
                    circle = new Circle({
                        center : mapPoint,
                        geodesic : true,
                        radius : xqdR
                    });
                    var graphic = new Graphic(circle, circleSymb);

                    mapObj.infoWindow.hide();
                    mapObj.graphics.add(graphic);
                    var query = new Query();
                    query.geometry = circle.getExtent();

                    featureLayer.queryFeatures(query, selectInBuffer);
                } catch (e) {
                    alert(“代理查询失败,请重新尝试”);
                }

            });

}

function selectInBuffer(response) {
    try{
        var feature;
        var features = response.features;
        var inBuffer = [];
        // filter out features that are not actually in buffer, since we got all
        // points in the buffer’s bounding box
        for ( var i = 0; i < features.length; i++) {
            feature = features[i];
            if (circle.contains(feature.geometry)) {
                inBuffer.push(feature.attributes[featureLayer.objectIdField]);
            }
        }
        var query = new esri.tasks.Query();
        query.objectIds = inBuffer;
        // use a fast objectIds selection query (should not need to go to the
        // server)
        featureLayer.selectFeatures(query, esri.layers.FeatureLayer.SELECTION_NEW,
                function(results) {
                    // 展现结果
                    showResults(results);
                });
    }catch (e) {
        alert(“代理查询失败,请重新尝试”);
    }
    
}
function showResults(results) {
    
    var resultCount = results.length;

    if (resultCount == 0) {
        $(“#xqdContent”).html(“查询异常”);
        $(“#xqdContent”).show();
    }else{
        
        
        var resultStr = “<table>”;
        for ( var i = 0; i < resultCount; i++) {
            var feature = results[i];
            var x = feature.geometry.x;
            var y = feature.geometry.y;
            addMarker(x, y);
            var name = feature.attributes.Name;
            var phone = feature.attributes.Telephone;
            var address = feature.attributes.Address;
            
            
            resultStr += “<tr><td><h3><font color=\”#00a6ac\”>名称: “
                + name + “</font></h3></td></tr>”;
            resultStr += “<tr><td>” + phone + “<br/>” + address
            + “</td></tr>”;
            
        }
        resultStr +=”</table>”;
        $(“#xqdContent”).html(resultStr);
        
        $(“#xqdContent”).show();
    }

}

 

// 添加点标记
function addMarker_my(lngLatX, lngLatY) {
    if (mapObj) {
        var symbol = new esri.symbol.PictureMarkerSymbol(appPath
                + “/images/locationmy.png”, 20, 28);
        var pt = new esri.geometry.Point(lngLatX, lngLatY);
        
        var graphic = new esri.Graphic(pt, symbol);
        if (mapObj.graphics) {
            mapObj.graphics.add(graphic);
        }
        
    }
}

arcgis查询附近的景点

arcgis查询附近的景点

1
0
分享到:
评论

相关推荐

    学士学位论文--基arcgisengine的黑龙江省旅游景点查询系统设计.doc

    本文主要介绍了基于 ArcGis Engine 的黑龙江省旅游景点查询系统的设计和实现。由于旅游信息的匮乏和大众获取信息方式的不畅,导致旅游消费者在进行旅游目的地选择时,会面对庞杂而无序的零散信息无从下手。为解决这...

    arcgis实习精品课题

    针对不同的对象设计详细的属性字段,例如景点信息包括名称、级别、票价等,餐饮信息则包含名称、价格介绍、联系方式等。 ##### 3. 数据库建设 - **数据分类**:根据GIS数据库的一般要求,将数据分为点状、线状和面...

    基ArcGisEngine的黑龙江省旅游景点查询系统设计学士学位论文.doc

    论文作者闫利爽在马大龙讲师的指导下,使用VC2005作为开发工具,结合ArcGisEngine组件库,设计了一个能够满足查询需求的旅游景点系统。 论文首先阐述了旅游行业的增长趋势,指出随着人们生活水平的提高,旅游已成为...

    arcgis10 教你创建逼真的 3D 视图

    ArcGIS 10 创建逼真的 3D 视图教程 本文档旨在指导用户使用 ArcGIS 10 ...通过按照本教程的步骤,用户可以创建一个逼真的城市模型,并使用该模型来研究空间感、模拟城市要素、景观、地标或针对学生或游客的旅游景点。

    arcgis矢量

    ### ArcGIS矢量化详解 #### 一、矢量化概述 ...综上所述,通过以上详细的步骤介绍,我们可以了解到在ArcGIS中如何有效地进行矢量化工作,并为其添加必要的属性信息。这对于GIS工作者来说是非常实用的技术之一。

    中国湖泊矢量图.shp - (澄湖)ArcGIS使用

    下面将详细介绍这一数据集的特性以及如何在ArcGIS中应用。 1. **矢量图数据**: 矢量图数据是一种常见的地理信息数据类型,它由点、线、面等几何对象组成,每个对象都有其特定的属性信息。在这个案例中,“澄湖”的...

    基于ArcGIS Engine的GIS开发的系统设计与实现.pdf

    本文将重点介绍ArcGIS Engine的优势及其在GIS开发中的关键技术,并以VB6作为编程语言,结合具体案例探讨基于ArcGIS Engine进行GIS开发的系统设计与实现方法。 #### 2. ArcGIS Engine开发简介 ArcGIS Engine是ESRI...

    上海绿地数据shp格式arcgis各种绿地公园字段有名称2022年无偏移

    标题中的“上海绿地数据shp格式arcgis各种绿地公园字段有名称2022年无偏移”揭示了这是一个地理信息系统(GIS)相关的数据集,主要用于描述2022年上海地区的绿地和公园分布。其中,“shp”是Esri公司开发的ArcGIS...

    2021年12月北京市旅游景点POI.zip

    综合以上信息,这个压缩包提供了2021年12月北京市的旅游景点位置信息,包括名称、地址、电话和类型等详细属性,采用的是GIS领域广泛使用的Shapefile格式,并且与ArcGIS软件兼容。这样的数据可以用于城市规划、旅游...

    完美版资料集ArcGIS10地图矢量化.docx

    总之,《完美版资料集ArcGIS10地图矢量化》这份文档详尽地介绍了使用ArcGIS10进行地图矢量化的基本操作,包括地图加载、矢量化处理和属性添加等关键步骤。通过学习和实践,用户可以掌握将栅格地图转换为矢量地图的...

    ARCGIS 9的学习材料

    ### ARCGIS 9的学习材料知识点详解 #### 一、启动ArcMap与建立新地图 - **启动ArcMap**: ...这些知识点主要围绕如何使用ArcGIS 9进行地图操作、图层管理和属性资料处理等方面展开,非常适合初学者学习和参考。

    DisneylandArcGISDemo:带有迪士尼乐园景点标记的 ArcGIS 演示。 此应用程序与迪士尼乐园无关

    1. **地图初始化**:使用ArcGIS SDK初始化地图视图,设置底图为高分辨率的卫星或地形图,以便用户清晰地查看乐园的地形和环境。 2. **数据加载**:将迪士尼乐园的景点数据(如坐标、名称、类型等)加载到地图中,这...

    旅游查询系统

    2. **景点查询**:游客可以根据关键词搜索感兴趣的景点,系统会返回相关的介绍和位置信息。 3. **最优路径提示**:基于地理信息,系统计算出从一个景点到另一个景点的最短路径,帮助游客规划游览顺序。 该系统的...

    ArcGIS缓冲区分析、叠加分析综合案例练习.doc

    1:100 万公路数据得出的研究范围内等级公路数据(shapefile 格式,数据名称为“road”)、数字高程数据一份(数据名称为“dem”)以及一份研究范围栅格地图(其中包含居民点、景点、河流和植被类型数据,数据名称为...

    重庆市旅游信息公众查询系统

    信息检索则提供旅游相关的详细信息,如景点介绍、住宿推荐等。 通过学习和实践【重庆市旅游信息公众查询系统】,开发者不仅能够掌握C#编程和ArcGIS Engine的使用,还能了解如何将GIS技术应用于实际问题解决,为后续...

    交通标志图案,所以对高速公路和城市公路图标

    此外,棕色的旅游标志为游客提供旅游景点信息,而黄色的学校区域标志提醒驾驶员附近有学校,需谨慎驾驶。 四、服务标志 服务标志主要为驾驶员提供各种服务设施信息,如加油、住宿、餐饮等。这类标志通常为绿色背景...

Global site tag (gtag.js) - Google Analytics