2016-06-24 3 views
-2

Я использую SDK ArcGIS Javascrit для базового пользовательского случая размещения некоторых маркеров с текстом на карте. Я могу добавить маркер, но у меня проблемы с вставкой текста на этот маркер.Добавление текста в слой ArcGIS Javascript

Вот мой код:

require([ 
    "esri/map", 
    "esri/dijit/BasemapToggle", 
    "esri/dijit/LocateButton", 
    "esri/geometry/Point", 
    "esri/symbols/SimpleMarkerSymbol", 
    "esri/symbols/SimpleLineSymbol", 
    "esri/symbols/Font", 
    "esri/symbols/TextSymbol", 
    "esri/Color", 
    "esri/graphic", 
    "esri/layers/GraphicsLayer", 
    "dojo/domReady!" 
], function(
    Map, BasemapToggle, LocateButton, Point, SimpleMarkerSymbol, Font, TextSymbol, SimpleLineSymbol, Color, Graphic, GraphicsLayer 
) { 
     map = new Map("map", { 
     center: [mapval[0][2],mapval[0][1]], 
     zoom: 18, 
     basemap: "streets" 
     }); 

     map.on("load", function() { 
      var gl = new GraphicsLayer(); 
      var font = new Font("20px", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLDER); 
      for (var i=0;i<mapval.length;i++){ 
        var p = new Point(mapval[i][2], mapval[i][1]); 
        var s = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 20, 
         new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, 
         new Color([255,0,0]), 1), 
         new Color([0,255,0,0.25])); 
        var g = new Graphic(p, s); 
        g.setAttributes({ 
         name: mapval[i][0] 
        }); 
        gl.add(g); 

        var t = new TextSymbol(mapval[i][0],font, new Color([0, 0, 0])); 
        var g2 = new Graphic(p, t); 
        gl.add(g2); 
      } 


      map.addLayer(gl);     
     }); 

    var toggle = new BasemapToggle({ 
    map: map, 
    visible: true, 
    basemap: "satellite" 
    }, "BasemapToggle"); 
    toggle.startup(); 

    var geoLocate = new LocateButton({ 
    map: map 
    }, "LocateButton"); 
    geoLocate.startup(); 

}); 
+0

Этот код не запускается так же, как и потому, что mapval не определен. Если вы можете обновить это, включив mapval и разместив его в JSFiddle или Codepen, тогда людям может быть проще протестировать его и помочь вам найти проблему. –

+0

хорошо catch. mapval был многомерным массивом, который был установлен выше в коде, содержащем: {[Title, Lat, Lng]} – Nate23VT

ответ

0

SimpleLineSymbol в требуете в неправильном месте. Как только это было исправлено для согласования с функциями, тогда была отображена метка.

Смежные вопросы