bagpipemike

add graphic (point) from url parameters, point doesn't display

Discussion created by bagpipemike on Jun 25, 2014
Latest reply on Jun 26, 2014 by bagpipemike
Hi,

I'm trying to have a simple map that will show an ArcGISTiledMapServiceLayer as the basemap. On top of this I want to add a graphic (a point) created with x and y values given as url parameters. The first problem I had was that I was getting an error saying map.graphics is null. I came across this forum post that says that I need to wait until the map load event is fired before adding the graphic. I tested that this works by manually typing x and y coordinates into the arguments I'm passing into the mapLoadHandler method like so:

map.on("load", function(){mapLoadHandler(325000, 675000);});

But in reality I want to pass the x and y values from the url parameters as arguments into the mapLoadHandler method and if I do this then the graphic doesn't appear (and there aren't any error messages). Interestingly the map does centerAndZoom successfully to the location of the x and y coordinates passed into the method but I don't understand why it then doesn't draw the graphic. Here is the code:

     var xcoord = new Number(getUrlVars()["x"]);
     var ycoord = new Number(getUrlVars()["y"]);     
     map.on("load", function(){mapLoadHandler(xcoord, ycoord);});

     function getUrlVars() {
      var vars = {};
      var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
       vars[key] = value;
      });
      return vars;
     }
     
     function mapLoadHandler(xcoord, ycoord) {
      //resizeMap();      
      var incident = new Point([xcoord, ycoord], new SpatialReference({
        wkid : 27700
      }));
      console.log("incident.x = " + incident.x);
      map.centerAndZoom(incident, 7);
      var symbol = SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 18, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 105, 255]), 2), new Color([255, 0, 0]));      
      var newGraphic = new Graphic(incident, symbol);
      map.graphics.add(newGraphic);
     }


Cheers,
Mike

Outcomes