Клуб API Карт

Определить попадает адрес в полигон или нет

peleskov
23 декабря 2016, 12:36

Есть функция которая определяет попадает указаный адрес в определенный полигон или нет (в моем случае полигон - ценр города Саратов)

	var myMap = new ymaps.Map('map', {
			center: [51.53922,46.05327], zoom: 19
		}),
		myPolygon = new ymaps.Polygon([
					[[ 51.53922,46.05327 ],
					 [ 51.54938,46.01161 ],
					 [ 51.53648,46.00380 ],
					 [ 51.53530,46.00848 ],
					 [ 51.53353,46.00743 ],
					 [ 51.53152,46.01095 ],
					 [ 51.52657,46.03280 ],
					 [ 51.53211,46.03615 ],
					 [ 51.53211,46.03623 ],
					 [ 51.53009,46.04575 ],
					 [ 51.53389,46.04784 ],
					 [ 51.53539,46.05104 ],
					 [ 51.53922,46.05327 ]]
		]);
		myMap.geoObjects.add(myPolygon);

	var result = ymaps.geoQuery(ymaps.geocode(addr)).searchInside(myPolygon);
	result.then(function () {
		if(result.getLength() == 1){
			console.info('Адрес внутри полигона');
		}
		else{
			console.info('Адрес вне полигона');
		}
	});	

addr - адрес передается при вызове функции

Но если адрес будет равен на пример:

addr = 'г. Саратов, ул. saja32sld, дом 3423421314';

в данном случае координаты адреса будут определены только по городу, так как все остальное набор символов, и точка попадет в полигон, т.е. функция выдаст положительный результат.

Вопрос: 

как узнать, что указанная улица не была найдена и соответственно указанный адрес не попадает в полигон?

8 комментариев
Подписаться на комментарии к посту
Руслан Стародумов
23 декабря 2016, 12:50
Смотрите в сторону GeocoderResult, там можно получить вид топонима.
https://tech.yandex.ru/maps/doc/jsapi/1.x/ref/reference/geocoderresult-docpage/
Почему ссылка на 1.x версию АПИ, она еще используется?

peleskov,
лучше использовать 2.1 https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeocodeResult-docpage/
ymapsapi,
 спасибо за ответ, но как получить из result улицу? как применить getThoroughfare()?
peleskov,
читайте внимательнее документацию: https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/geocode-docpage/#param-options.kind
peleskov,
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/geocode-docpage/
Руслан Стародумов
23 декабря 2016, 13:18
peleskov,
я не обратил внимание на это просто, используйте 2.1 разумеется
так проверяю точность адреса
var accur = res.geoObjects.get(0).properties.get('metaDataProperty.GeocoderMetaData.kind');
если accur == 'house', значит адрес определен с точностью до дома