ThinkGeo.com    |     Documentation    |     Premium Support

Placing points on the image

Hi,

I am trying to place points on an .png file I have loaded. How do I do it?

Adding the location of the point in the code is also fine for now, but looking for placing the points when clicked on certain location on the map.

 I am new to Mapsuite mvc.

In the index file I tried to add pointshape.-

PointShape pointShape = new PointShape(-45.324, 152.542); // values are lat long.

Will the image file contain lat long?





Thanks



Hi Vidz,



Thanks for using MapSuite and welcome to our forums.



I think your scenario is draw a pointshape where your mouse click, is that right?



If so, you can check How Do I Samples—>InteractiveMap—>AddAClickEvent.



In this sample, the key is the click events, which this events, you can get the lon/lat where the mouse click, then you can add pointshape just like the code you use in your index page.


public void ClickEvent(Map map, GeoCollection<object> args)
        {
            // here you can get the lon/lat
            PointShape position = new PointShape(Convert.ToDouble(args[0]), Convert.ToDouble(args[1]));
            // then you can draw the shapes on the map, this samples draws a marker.
            InMemoryMarkerOverlay markerOverlay = (InMemoryMarkerOverlay)map.CustomOverlays["MarkerOverlay"];
            markerOverlay.FeatureSource.InternalFeatures.Add("marker" + Guid.NewGuid().ToString(), new Feature(position));
        }



Please feel free to let us know if you have any queries.



Thanks,



Gary

Hi Gary, 
 I have loaded an image file (png). now I would like to provide some values ( lat/long or x y cord.) in the code which will place a point in the map at the given location( lat/long or X Y provided in the code). Right now my code is simple. Just wanna know what and where I will have to add things needed. 
 Index code : @using ThinkGeo.MapSuite.MvcEdition
@using ThinkGeo.MapSuite.Core

       @{Html.ThinkGeo().Map("Map1")
             
        
     .MapBackground(new BackgroundLayer(new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"))))
    .CurrentExtent(-300.22, 80.05, -20.03, 5.91)
 .MapUnit(GeographyUnit.Meter)
        .StaticOverlay(overlay =>
        {
GdiPlusRasterLayer gdiPlusImageLayer = new GdiPlusRasterLayer(Server.MapPath(@"~\App_Data\MyMap.png"));
            gdiPlusImageLayer.UpperThreshold = double.MaxValue;
            gdiPlusImageLayer.LowerThreshold = 0;

            overlay.Layer(gdiPlusImageLayer);
 })
        .Render();
    } 
 
 Controller code:  using ThinkGeo.MapSuite.MvcEdition;
using System.Web.Mvc;
using ThinkGeo.MapSuite.Core;
using System.Collections.ObjectModel;
using System.Collections.Generic;
namespace HelloWorld.Controllers
{
    public class HomeController : Controller
    {
 
        public ActionResult Index()// UseADifferentProjectionForAFeatureLayer()  
            
        {
            return View();
        }

     

        }
    }
 
  
 Thanks.

Hi Vidz,



Attached file is a sample for you according to requirement mentioned, image file is a world map, would you please have a try?



I’m not sure if there is anything incorrect with the code you attached, not sure just wondering, because seems like the current extent of map is (-300.22, 80.05, -20.03, 5.91), it’s in projection EPSG:4326, in this case, the MapUnit should be decimal degree. If what I misunderstand, please feel free to correct me.



Hope it helps.
Regards,

Johnny




Post12258.zip (528 KB)