Detecting a click / displaying ToolTips

來源:互聯網
上載者:User
Detecting a click / displaying ToolTips 
Tags: General Topics


fatboyjimMar 11 2007 at 6:21 AM

Using ASP.NET, The latest changeset of SharpMap ( 19234 ) and GdalRasterLayer..

I have a map rendered, and have added extra points in another layer using the following code:

SharpMap.Layers.VectorLayer pointsOfInterestLayer = new SharpMap.Layers.VectorLayer("PointsOfInterest");
System.Collections.ObjectModel.Collection<SharpMap.Geometries.Geometry> geomCol = new System.Collections.ObjectModel.Collection<SharpMap.Geometries.Geometry>();

geomCol.Add(new SharpMap.Geometries.Point ( 530000, 230000 ) );

pointsOfInterestLayer.DataSource = new SharpMap.Data.Providers.GeometryProvider(geomCol);
pointsOfInterestLayer.Style.Symbol = new Bitmap(Server.MapPath(@"~/App_data/icon.bmp"));

map.Layers.Add(pointsOfInterestLayer);
map.ZoomToExtents();

This works fine, I am looking to know however if there is a built-in way of detecting clicks (or hovers) to the points of interest on the map, ideally to display a ToolTip, but the main thing is detecting the click and knowing which item was clicked.

I can obviously implement this a primitive way (detect the click, transform the image co-ordinates into map co-ordinates, if they are within <icon-size> of a point then that point was clicked) but must be an easier way, no?

Thanks again for your time

Jim


OdegaardMar 11 2007 at 6:56 PM

All SharpMap does is returning a "dumb" bitmap image. You have to write your own code that displays the bitmap and listens for click events. So unfortunately you need to do the "primitive" way. There are helper methods for converting from screen coordinates though.

There are a few sample controls in the SharpMap.UI namespace where you can see how it could be done, but these are just samples to help people get started. SharpMap's main focus is an engine for rendering maps, and not the UI layer of things.


fatboyjimMar 12 2007 at 1:17 AM

Thanks for the message, it was worth a try!

The primitive way is not too much of a bind, fairly easy to do, I just didn't want to waste my time if there was a way to do it.

Thanks again, and keep up the good work. If you have a moment, please consider taking a look at my other post - http://www.codeplex.com/SharpMap/Thread/View.aspx?ThreadId=8036 - (it's really driving me up the wall!)

Jim


VedatMar 12 2007 at 6:01 AM

Hi fatboyjim,

How did you manage to detect mouse clicks? Did you use javascript or C# code to handle mouse clicks? I would be happy If you share this. Thanks.


fatboyjimMar 12 2007 at 8:01 AM

Hi Vedat,

Detecting mouse clicks was easy. The following works for me to pan around a map:

ASP.NET code:
<asp:ImageButton Width="1000" Height="700" ID="imgMap" runat="server" OnClick="imgMap_Click" style="border: 1px solid #000;" />

C# code:
protected void imgMap_Click(object sender, ImageClickEventArgs e)
{
myMap.Center = SharpMap.Utilities.Transform.MapToWorld(new System.Drawing.Point(e.X, e.Y), m_map);
img = m_map.GetMap();
string imgID = SharpMap.Web.Caching.InsertIntoCache(5, img);
imgMap.ImageUrl = "getmap.aspx?ID=" + HttpUtility.UrlEncode(imgID);
}

Cheers
Jim


VedatMar 14 2007 at 6:54 AM

Thanks fatboy. As I understand, you are not using the ajax version. You put the map pimage on an image button. And the image button has the onclick event. But ajaxmap doesn't have one!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.