drawing polygons / polylines using the mouse?

Hi!

I am searching for a solution to draw a polygon or a polyline witht the mouse on the map like it is implemented on local.live.com. There one can press the "Mark an area on the map" button on the scratch pad and can draw with the mouse.

I found a solution by clicking on the map and saving thee.view.LatLong points in an array. After right clicking on the map the polygon is drawn usingVEMap.AddPolygon() method. But it is not the same as local.live.com does it. There is a preview of the polygon which is changing by moving the mouse.

Has anybody an idea how that could be solved?

Thanks,

Yavuz

[760 byte] By [selim51] at [2007-12-27]
# 1

Hi Yavuz,

So is the problem that you are running into related to trapping the MouseMove event?
Have you tried trapping the mousemove event for the <div> that contains the map?

Dwayne.

DwayneLamb-CI at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 2

double post

sorry!

selim51 at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 3

Hello Dwayne,

The problem was not trapping the mouse move event. I don't really know where the problem was but I've solved the problem.

You can look at the situation I have described in my post above and this is the solution I wanted. It's like in local.live.com as mentioned.

Trapping the mouse move event is done in this way:

function DrawPolygon() {
map.AttachEvent('onclick', mapClick);
map.AttachEvent('oncontextmenu', mapContextMenu);
map.AttachEvent('onmousemove', mapMouseMove);
map.vemapcontrol.EnableGeoCommunity(true);
}

function mapClick(e) {
/* ... */
}

function mapContextMenu(e) {
/* ... */

map.DetachEvent('onclick', mapClick);
map.DetachEvent('oncontextmenu', mapContextMenu);
map.DetachEvent('onmousemove', mapMouseMove);
}

function mapMouseMove(e) {
/* ... */
}

I have attached the mouse move event to the VEMap object not to the <div> element as you can see. But I have to enable geo community in order to call the mapMouseMove function when moving the mouse over the map.

I don't know why the mouse move event isn't (officially) supported by the VEMap object.

Yavuz

selim51 at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 4

Well I am not sure if it is realated or not... but I do see a bug in your "solution" linked app that you will want to take a look at.

After I draw a polygon in your solution (which I absolutely agree is a much better experience than the situation link), I noticed that the ability to pan the map is gone after drawing the polygon. It was there prior to the draw, but something that happens in your DrawPolygon routine (perhaps overriding the onmousemove event) is killing the users ability to drag and pan the map.

Dwayne.

DwayneLamb-CI at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 5

Thank you Dwayne. Bug is now fixed!

I have forgotten to disable geo community:

function mapContextMenu(e) {
/* ... */

map.DetachEvent('onclick', mapClick);
map.DetachEvent('oncontextmenu', mapContextMenu);
map.DetachEvent('onmousemove', mapMouseMove);
map.vemapcontrol.EnableGeoCommunity(false); // now internal mousemove event handler is working
}

Now it works.

There is one question about handling mousemove event. Is there another, better way handling that event than the way I have done?

Yavuz

selim51 at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 6

Thats really cool Yavuz,

I been wondering how to do that for some time.

Thanks for sharing.

John.

SoulSolutions at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 7

Now you know how to do it

But it is more a hack I think, because as I said before onmousemove event is not supported by the VEMap class. No onmousemove event in the VEMap Events list.

Yavuz

selim51 at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 8

Yavuz,

I've added your code to the VE wiki so if the API does change it can be easily updated for everyone.

http://viavirtualearth.com/wiki/DrawPolygon.ashx

Feel free to add/edit

John.

SoulSolutions at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...
# 9

I have nothing to add John.

Yavuz

selim51 at 2007-9-4 > top of Msdn Tech,Windows Live Developer Forums,Virtual Earth: Map Control Development...

Windows Live Developer Forums

Site Classified