Hallo,

Ik heb een vrij lastige vraag, maar dit moet te realiseren zijn.
Ik wil graag dat ik op mijn website een route kan berekenen met behulp van google maps (dit lukt al).
Nou wil ik vervolgens dat ik kan kijken waarlangs de route gaat, en dan kijken in mijn database voor plaatsen dichtbij de route, een vast aantal kilometers.
Hoe kan ik dit oplossen.

Als het makkelijker is met bijvoorbeeld bing maps, dan vind ik dat ook niet erg.

Alvast bedankt!
Kijk eens naar het onderste kaartje op deze site:
http://www.bdcc.co.uk/Gmaps/BdccGmapBits.htm

Volgens mij is dat wat je bedoelt. Hij berekent de afstand van een punt tot de lijn op de kaart. Op zich is het omgekeerd, maar wellicht kan je het met wat kunst- en vliegwerk gebruiken. Ik heb hier zelf ook al eens naar gekeken, maar nooit echt tot iets bruikbaars gekomen.
@Erwin, ik wil niet alle punten laten zien op de kaart, maar alleen de punten die dicht bij de route liggen
Heb je de aller, aller onderste bekeken? Die berekent de afstand van je muis tot aan de polyline op de kaart. Dat is wat je wilt. Alleen wil je het niet voor een punt, maar voor meerdere en dan filter je de punten die te ver liggen. Of begrijp ik je echt helemaal verkeerd?
@Erwin, ik zit denk ik te beperkt te denken, ik wou het alleen met PHP doen, maar je kunt dit niet af zonder wat javascript, ik zal er mee aan de slag gaan. bedankt!
Het voorbeeld is in javascript, maar dat maakt niet uit. Waar het om gaat is dat je de berekening hebt, dat is het moeilijkste. Of je vervolgens die berekening in de database, php of javascript uitvoert maakt niet zoveel uit.
Gebruik deze (javascript) functie om de afstand te berekenen. Tip: Gebruik javascript, dan zit de rekenkracht in de client's browser en niet in jouw server. Bij drukte merk je dat wel namelijk :)

function distance(lat1,lon1,lat2,lon2) {
	var R = 6371; // km (change this constant to get miles)
	var dLat = (lat2-lat1) * Math.PI / 180;
	var dLon = (lon2-lon1) * Math.PI / 180;
	var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
		Math.cos(lat1 * Math.PI / 180 ) * Math.cos(lat2 * Math.PI / 180 ) *
		Math.sin(dLon/2) * Math.sin(dLon/2);
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
	var d = R * c;
	if (d>1) return Math.round(d)+"km";
	else if (d<=1) return Math.round(d*1000)+"m";
	return d;
}


Stel een lijstje op met coördinaten en loop coördinaat voor coördinaat af. Houd in een array de afstanden bij en je kan deze dan vervolgens sorteren op dichtstbijzijnde.
@Terence, is dat niet de afstand tussen twee punten? TS is op zoek naar de afstand tussen een punt en een lijn (polyline), dat is iets anders.

Reageren