How to do search in sql server database for all properties (with long, lat) that fall within sel

Would like to create site with similar functionality tohttp://www.realtysouth.com/consumer/listing/ListingSearch.aspx?SearchType=map&ListingType=1&ListingSearchID=&RECoJumpSearchID=&action=&defaultlevel=

for our site

www.mls.ca

How to do search in sql server database for all properties (with long, lat) that fall within selected map area?

thanks

steph

[479 byte] By [sviau] at [2007-12-27]
# 1

im assuming that i will capture minx,miny,maxX,maxY coordinates from the map, and pass to my property search stored procedure, and search against my address data which has long and lat.

What is sql to find matches within selected map area passed to sproc?

thanks

steph

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

well,

you need to provide a plenty more information.

but i guess you got a sql table like this:

ID, Name, Street, City, Zipcode, Latitude, Longitude, MainCategory, SubCategory.

You can search your stuff via perimeter(distance from center of map) or by viewport(visible map view).

searching via perimeter is a bit more complicated, you need to do some sin() cos() math in your sql select then,

viewport search is easier, you only need to check that the lat/longs are in your bounding rectangle in the where part of the select.

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

If it helps? this will work out the distance in miles between two lon/lat points.

Lat1 = "58.64433"
Long1 = "-3.03476"
Lat2 = "50.06635"
Long2 = "-5.71496"


DistanceLong = 53*(Long2-Long1)
DistanceLat = 69.1*(Lat2-Lat1)
Distance=Sqr((DistanceLat*DistanceLat)+(DistanceLong*DistanceLong))

The 53 and 63 look strange - but it takes into consideration that the earth is not round so just use these values !

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

to be clearer,

we have address table ith address which has already been geocoded.

address table:
street number
street name
city
province
long
lat

User will select map area, then click search properties button. That will call a stored proceure to find the properties (with address) that have are located in that selected map area.
Im assuming that im passing lnog1, long2, lat1, lat2 (coordinates that ive captured from the selected map) to the stored procedure

Im assuming this is common function, and would only have to copy logic into our existing stored procedure...

thanks

steph

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

Jeff,

How do i do both methods..actual sql ? or is there website that has sql code samples?

Thanks

steph

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

Are you after this?

CREATE PROCEDURE dbo.FindAddressesWithinBounds

(

@long1 float
, @long2 float
, @lat1 float
, @lat2 float
)

AS

SELECT
a.[street number]
, a.[street name]
, a.[city]
, a.[province]
, a.[long]
, a.[lat]

FROM
dbo.myaddresstablename a

WHERE
a.[Lat] >= @lat1 and a.[Lat] <= @lat2 and a.[Long] >= @long1 and a.[Long] <= @long2

You have to ensure the @lat2 > @lat1 and @long2 > @long1

John.

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

exactly!
is that easy?!

Do you have to consider other variables like the zoom level, view type ie. 3d, 2d, birds eye?
the long1, long2, at1,lat2 would come from the map control boundary, rite?
same could be applied to drawing a rectangle over the map control (alt + left button drag), rite?

thanks
steph

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

If you put your logic on the "onchangeview" event then whenever the map is panned, zoomed etc you can get the current bounds and make your query. This covers 2D and rectange. Birds eye I belive is quite different. 3D is a little interesting, becouse you can rotate the view you must ensure your bounds are the right way around for your query. Also when you tilt and see a bit of space the mapview gives a less then ideal set of bounds for the data.

If you interested to see what i'm talking about in 3D mode look at this in 3d (IE with 3d installed click on link getmapview):

http://www.soulsolutions.com.au/portals/0/ve/VE3DView.htm

and the thread here

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=900771&SiteID=1

John.

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

thanks very much for all your help...as you can tell Im new to the platform.

what logic would i include in "If you put your logic on the "onchangeview" event " ?
i assume this is standard process.

thanks

steph

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

Its a little old now but this will get you started:

http://www.viavirtualearth.com/vve/Articles/Clustering.ashx

Just don't use the clustering parts if you don't want to cluster!

John.

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

i would like to share with you this function that will find that distance between two latlong points. It is described in detail at this link

http://www.movable-type.co.uk/scripts/LatLong.html

cheers.

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

Windows Live Developer Forums

Site Classified