RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-295006

Alexei Lavrov's questions

Martin Hope
Alexei Lavrov
Asked: 2020-04-28 02:39:12 +0000 UTC

如何将按钮添加到更改地图的气球?

  • 1

我正在尝试向气球添加一个按钮,该按钮将清除地图上的所有标记并在按下它的位置生成一个新标记,但它不起作用 - 浏览器发誓没有这样的功能(据我所知它,生成的按钮不能从外部文件执行功能)。告诉我,这个问题有什么漂亮的解决方案吗?到目前为止,当您单击标签本身时,我已经使所需的功能起作用,但我不太喜欢这个选项。

res.geoObjects.each(function (item) {
    console.log(item.geometry.getCoordinates());
    if (item.getPremiseNumber()) {
        var tempPlacemark = new ymaps.Placemark(item.geometry.getCoordinates(), {balloonContent: item.getAddressLine() + '<br><button class="btn btn-secondary btn-sm mt-1" onclick="getAddress(\'' + item.geometry.getCoordinates() + '\')">выбрать</button>'})
    } else {
        var tempPlacemark = new ymaps.Placemark(item.geometry.getCoordinates(), {balloonContent: item.getAddressLine()})
    }
    searchCollection.add(tempPlacemark);
});

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Alexei Lavrov
Asked: 2020-04-25 15:36:34 +0000 UTC

处理搜索结果

  • 0

我正在尝试做我的第一个 js 项目,但在此过程中遇到了一些问题。

从示例中收集必要的功能。其中一个功能应该是这样工作的:一个人在搜索中驱动了一些不准确的东西,例如,一条街道和一个没有城市的房子,然后在地图上给他几个标记的选项。当您单击此类标签时,您需要将其替换为另一个标签或显示带有按钮的特殊气球。反之亦然,当结果为 1 时,必须立即将此类标签替换为红色标签,从而进一步传递地址。

问题是我不明白搜索结果的放置位置以及如何使用它们。我是否需要以某种方式将它们转换为地理对象的集合?

ymaps.ready(init);

function init(){

var myPlacemark, metkaCoord, 
suggestView = new ymaps.SuggestView('searchLine', {boundedBy: [[58.29, 57.47], [56.24, 64.54]]}),
myMap = new ymaps.Map('map', {
	center: [56.83, 60.60],
	zoom: 9
});


myMap.controls.remove('searchControl');
myMap.controls.remove('trafficControl');
myMap.controls.remove('typeSelector');
myMap.controls.remove('rulerControl');


myMap.events.add('click', function (e) {
	var coords = e.get('coords');

	// Если метка уже создана – просто передвигаем ее.
	if (myPlacemark) {
		myPlacemark.geometry.setCoordinates(coords);
	}
	// Если нет – создаем.
	else {
		myPlacemark = createPlacemark(coords);
		myMap.geoObjects.add(myPlacemark);
		// Слушаем событие окончания перетаскивания на метке.
		myPlacemark.events.add('dragend', function () {
			getAddress(myPlacemark.geometry.getCoordinates());
		});
	}
	getAddress(coords);
});

// Создание метки.
function createPlacemark(coords) {
	myMap.geoObjects.removeAll();
	return new ymaps.Placemark(coords, {
		iconCaption: 'поиск...'
	}, {
		preset: 'islands#redDotIconWithCaption',
		draggable: true
	});
}

// Определяем адрес по координатам (обратное геокодирование).
function getAddress(coords) {
	myPlacemark.properties.set('iconCaption', 'поиск...');
	ymaps.geocode(coords).then(function (res) {
		var firstGeoObject = res.geoObjects.get(0);

		myPlacemark.properties
			.set({
				// Формируем строку с данными об объекте.
				iconCaption: [
					// Название населенного пункта или вышестоящее административно-территориальное образование.
					firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
					// Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
					firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
				].filter(Boolean).join(', '),
				// В качестве контента балуна задаем строку с адресом объекта.
				balloonContent: firstGeoObject.getAddressLine()
			});

			$('#addressFull').text(firstGeoObject.getAddressLine());
			
			
			$('#addressCoordinates').text('');
			$('#addressCoordinates').text(firstGeoObject.geometry.getCoordinates());
			metkaCoord = firstGeoObject.geometry.getCoordinates()
			$('#addressRegion').text('');
			$('#addressRegion').text(firstGeoObject.getAdministrativeAreas()[0]);
			$('#addressCity').text('');
			$('#addressCity').text(firstGeoObject.getLocalities()[0]);
			$('#addressDistrict').text('');
			$('#addressDistrict').text(firstGeoObject.getLocalities()[1]);
			$('#addressMcrDistrict').text('');
			$('#addressMcrDistrict').text(firstGeoObject.getLocalities()[2]);
			$('#addressStreet').text('');
			$('#addressStreet').text(firstGeoObject.getThoroughfare());
			
			if (firstGeoObject.getPremiseNumber()) {
				$('#addressHouse').removeClass('text-danger');
				$('#addressHouse').text('');
				$('#addressHouse').text(firstGeoObject.getPremiseNumber());
			} else {
				$('#addressHouse').addClass('text-danger');
				$('#addressHouse').text('номера дома нет');
			}

	});
}


/* Начало поисковой строки*/

$('#searchSubmit').bind('click', function (e) {
	myMap.geoObjects.removeAll();
	metkaCoord = null;
	geocode();
});

function geocode() {
	var request = $('#searchLine').val();
	var myGeocoder = ymaps.geocode(request, {boundedBy: [[58.29, 57.47], [56.24, 64.54]], strictBounds: true});
	myGeocoder.then(
		function (res) {
			myMap.geoObjects.add(res.geoObjects);
			myMap.setBounds(myMap.geoObjects.getBounds(), {checkZoomRange:true}).then(function(){ if(myMap.getZoom() > 16) myMap.setZoom(16);});
		},
		function (err) {
			// обработка ошибки
			alert('Ошибка');
		}
	);
}


/* Заменяем найденный объект на нашу метку */




/* Считаем километры */

$('#buildRoute').bind('click', function (e) {
	console.log(metkaCoord);
	ymaps.route([
		'Екатеринбург, проспект Ленина, 39',
		metkaCoord
	]).then(
		function (route) {
			myMap.geoObjects.add(route);
			var routeLength = Math.floor(route.getLength() / 1000);
			$('#routeKm').text(routeLength + ' км');
		},
		function (error) {
			alert("Возникла ошибка: " + error.message);
		}
	);
});






}
body {font-family:'PT Sans', sans-serif;}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>

<link href="https://fonts.googleapis.com/css?family=PT+Sans" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">


<div class="container my-3">

<h1>Добавление нового объявления</h1>

<p><div class="form-inline"><input type="text" id="searchLine" class="form-control w-50 mr-1" data-provide="typeahead"> <button type="submit" id="searchSubmit" class="btn btn-primary">Показать на карте</button></div></p>

<p><div id="map" style="width: 100%; height: 400px"></div></p>

<p id="addressFull">Полный адрес</p>

<table>
<tr>
	<td>Координаты:</td>
    <td id="addressCoordinates"></td>
</tr>
<tr>
	<td>Область:</td>
    <td id="addressRegion"></td>
</tr>
<tr>
	<td>Город:</td>
    <td id="addressCity"></td>
</tr>
<tr>
	<td>Район:</td>
    <td id="addressDistrict"></td>
</tr>
<tr>
	<td>Микрорайон:</td>
    <td id="addressMcrDistrict"></td>
</tr>
<tr>
	<td>Улица:</td>
    <td id="addressStreet"></td>
</tr>
<tr>
	<td>Дом:</td>
    <td id="addressHouse"></td>
</tr>
</table>
<p class="mt-5"><button id="buildRoute" class="btn btn-secondary">Посчитать километры от центра</button></p>
<p>Сколько километров от центра: <span id="routeKm">не известно</span></p>


</div>

yandex-maps-jsapi
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5