2012-10-19 45 views
2

我是ArcGIS的新手。如何使用ArcGIS JavaScript API直接繪製點和文本

我想直接在地圖上繪製一些點和一些文字。

像下面的東西。但它只是顯示地圖,並沒有畫任何東西。

任何人都可以幫我解決這個問題嗎?

<!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> 
+0

函數ArcGISTiledMapServiceLayer()有很多例子,它也需要oncick()事件。但是我找不到一個用於ArcGISDynamicMapServiceLayer()函數的函數。 – Rock

回答

5

使用平鋪地圖作爲底圖,然後添加動態地圖圖層,更改addPoint函數: 注意: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); 
} 
1

您的圖形代碼沒有問題。

我試圖按原樣運行您的代碼,但map.graphics對象爲空 - 我無法從ESRI加載該示例圖層。我換成你行:

map.addLayer(layer)

map.addLayer(new esri.layers.OpenStreetMapLayer());

只是爲了得到一些基本的數據了,我得到了一個紅點和一些綠色的文字在非洲海岸的某處。它看起來像動態圖層不創建圖形對象...?

+0

謝謝。我自己修復了它。 – Rock

+0

是的,地圖不起作用。它僅用於佔位符。 – Rock

相關問題