ThinkGeo.com    |     Documentation    |     Premium Support

Marker does not display a specified icon

Hi, 


I did the following but my map displays the default red marker instead of the one I wanted it to.



var showTripOnMap = function (jobId, newLonlat) 

    var olMap = Map1.GetOpenLayersMap(); 
    var tripMarkerOverlay = olMap.getLayer("TripMarkerOverlay"); 
    var size = new OpenLayers.Size(10, 17); 
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); 
    var icon = new OpenLayers.Icon('10.0.90.2:2178/Icons/tripBlue.png', size, offset); 
    var mapLocation = new OpenLayers.LonLat(newLonlat.x, newLonlat.y, icon.clone());
    var marker1 = new OpenLayers.Marker(mapLocation); 
    markers[jobId] = marker1; 
    tripMarkerOverlay.addMarker(marker1); 


I can display my icon using url 10.0.90.2:2178/Icons/tripBlue.png in my IE so I'm pretty sure the path is correct. 


Thanks,


Tracy



Tracy, 
  
 I’m not sure what type of the marker overlay you added. For example InMemoryFeatureMarkerOverlay, FeatureSourceMarkerOverlay or SimpleMarkerOverlay. If you want to add markers on the client side; I recommend you using SimpleMarkerOverlay; because the marker overlay will conflict with our client functions. 
  
 Please have a try and see how it works. 
  
 Thanks, 
 Howard

Hi Howard,


I am using SimpleMarkerOverlay.  The following code is how I created the overlay.



protected void Page_Load(object sender, EventArgs e)
        {           
            if (!Page.IsPostBack)
            {
                Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#B3C6D4"));

                RectangleShape recShp = new RectangleShape(-123.18935, 49.204813, -123.06730, 49.126915);

                Proj4Projection proj4 = new Proj4Projection();
                proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
                proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
                proj4.Open();
                Map1.CurrentExtent = proj4.ConvertToExternalProjection(recShp);
                
                Map1.MapUnit = GeographyUnit.Meter;
                Map1.MapTools.MouseCoordinate.Enabled = true;

                // Overlay for map data
                LayerOverlay mapOverlay = new LayerOverlay("CustomOverlay");
                SimpleCustomLayer customLayer = new SimpleCustomLayer();
                mapOverlay.Layers.Add(customLayer);
                Map1.CustomOverlays.Add(mapOverlay);

                // Overlay for trip display
                SimpleMarkerOverlay tripMarkers = new SimpleMarkerOverlay("TripMarkerOverlay");
                Map1.CustomOverlays.Add(tripMarkers);
            }
        }

Thank you very much for your help!


Tracy



Tracy,



You can see from OpenLayers' documentation that the constructor of the OpenLayers.LonLat only takes two parameters. The icon should be in the OpenLayers.Marker constructor. So here is the correct code:

var marker1 = new OpenLayers.Marker(mapLocation, icon.clone());


Hope it helps.



Thanks,

Howard