如何使用ArcGIS JavaScript API直接绘制点和文本

如何使用ArcGIS JavaScript API直接绘制点和文本,javascript,arcgis,esri,arcgis-js-api,Javascript,Arcgis,Esri,Arcgis Js Api,我对ArcGIS不熟悉 我想直接在地图上画一些点和一些文字 像下面这样。但它只是显示地图,什么也不画 有人能帮我解决这个问题吗 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Draw point and text</title> <link rel="st

我对ArcGIS不熟悉

我想直接在地图上画一些点和一些文字

像下面这样。但它只是显示地图,什么也不画

有人能帮我解决这个问题吗

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Draw point and text</title>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.1/js/dojo/dijit/themes/tundra/tundra.css">
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis?v=3.1"></script>
<script type="text/javascript">
dojo.require("esri.map");
dojo.require("esri.layers.agsdynamic");
var map;
var layer;
var mapUrl;
var defaultSymbol;
function Init() 
{
    map = new esri.Map("mapDiv");
    mapUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer";
    //mapUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer";
    layer = new esri.layers.ArcGISDynamicMapServiceLayer(mapUrl);
    map.addLayer(layer);        
    defaultSymbol = new esri.symbol.SimpleMarkerSymbol(); // point
    defaultSymbol.setColor(new dojo.Color([255, 0, 0]));

    addPoint(10, 10);
    addText(10, 20, "Text");
}
function addPoint(x, y)
{
    var pt = new esri.geometry.Point(x, y, map.spatialReference);
    var graphic = new esri.Graphic(pt, defaultSymbol);
    map.graphics.add(graphic);
}
function addText(x, y, text) 
{
    var pt = new esri.geometry.Point(x, y, map.spatialReference);

    //Create font
    var font = new esri.symbol.Font();
    font.setSize(18);
    font.setWeight(esri.symbol.Font[WEIGHT_NORMAL]);

    //Create the TextSymbol
    var textSymbol = new esri.symbol.TextSymbol();
    textSymbol.setText(text);
    textSymbol.setColor(new dojo.Color([0, 255, 0]));
    textSymbol.setFont(font);
    textSymbol.setKerning(true);
    var graphic = new esri.Graphic(pt, textSymbol);
    map.graphics.add(graphic);
}

 dojo.addOnLoad(Init);
     </script>  
    </head>
   <body class="tundra">
   <div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div>
   </body>  
   </html>

绘制点和文本
dojo.require(“esri.map”);
require(“esri.layers.agsdynamic”);
var映射;
var层;
var-mapUrl;
var默认符号;
函数Init()
{
map=新的esri.map(“mapDiv”);
mapUrl=”http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer";
//mapUrl=”http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer";
layer=新的esri.layers.ArcGISDynamicMapServiceLayer(mapUrl);
map.addLayer(层);
defaultSymbol=新esri.symbol.SimpleMarkerSymbol();//点
setColor(新的dojo.Color([255,0,0]);
添加点(10,10);
添加文本(10,20,“文本”);
}
函数添加点(x,y)
{
var pt=新esri.几何体.点(x,y,地图.空间参考);
var图形=新esri图形(pt,默认符号);
map.graphics.add(图形);
}
函数addText(x,y,text)
{
var pt=新esri.几何体.点(x,y,地图.空间参考);
//创建字体
var font=新的esri.symbol.font();
字体设置大小(18);
font.setWeight(esri.symbol.font[WEIGHT_NORMAL]);
//创建文本符号
var textSymbol=新的esri.symbol.textSymbol();
textSymbol.setText(文本);
setColor(新的dojo.Color([0,255,0]);
textSymbol.setFont(字体);
textSymbol.setKerning(真);
var图形=新esri图形(pt,textSymbol);
map.graphics.add(图形);
}
dojo.addOnLoad(Init);

您的图形代码没有问题

我尝试按原样运行代码,但map.graphics对象为空-我无法从ESRI加载该示例层。我换了你的台词:

map.addLayer(层)

map.addLayer(新的esri.layers.OpenStreetMapLayer())


为了得到一些基础数据,我在非洲海岸的某处得到了一个红点和一些绿色文本。看起来动态层没有创建图形对象…?

使用平铺贴图作为基础贴图,然后添加动态贴图层,更改添加点功能: 注意:wkid取决于您的地图空间

function addPoint(x, y)
{
   var point = new esri.geometry.Point(x, y, new esri.SpatialReference({ wkid: 102113 }));
   var mp = esri.geometry.geographicToWebMercator(point);
   point = new esri.geometry.Point({ "x": mp.x, "y": mp.y, "spatialReference": { "wkid": 102113} });
   var graphic = new esri.Graphic(point, defaultSymbol);
   map.graphics.add(graphic);
}

函数ArcGISTiledMapServiceLayer()有很多示例,它还需要onick()事件。但我找不到函数ArcGISDynamicMapServiceLayer()的对应项。