有一个代码。原来不是我的。该代码使用气球(标签)在所需位置绘制地图。功能 - 当您拖动地图时,输入获取坐标。我提供例子。问题如下。当在沙漠地区指定坐标时(粗略地说,在田野中,我们只是从 Yandex 地图中复制),然后地图将绘制在完全不同的地方。如果我们从城市获取坐标,则地图绘制正确。
这是代码 - https://inlnk.ru/Pmo8BE或这里(我把它交给带钥匙的工人 - 以免浪费时间)。
<div id="map" style="width: 100%; height: 400px;"></div>
Адрес:
<input type="text" id="address">
Координаты:
<input type="text" id="ypoint" class="form-input">
<script src="https://yandex.st/jquery/2.1.1/jquery.min.js"></script>
<script src="https://api-maps.yandex.ru/2.1/?apikey=f14114d6-4ebb-4087-b128-5d9d0454fd0e&lang&lang=ru_RU"></script>
<script type="text/javascript">
ymaps.ready(init);
function init() {
var myMap = new ymaps.Map("map", {
center: [47.222078, 39.720358],
zoom: 10
}, {
searchControlProvider: 'yandex#search'
});
/* Начальный адрес метки */
var address = [47.222078, 39.720358];
ymaps.geocode(address).then(function(res) {
var coord = res.geoObjects.get(0).geometry.getCoordinates();
var myPlacemark = new ymaps.Placemark(coord, null, {
preset: 'islands#blueDotIcon',
draggable: true
});
/* Событие dragend - получение нового адреса */
myPlacemark.events.add('dragend', function(e){
var cord = e.get('target').geometry.getCoordinates();
$('#ypoint').val(cord);
ymaps.geocode(cord).then(function(res) {
var data = res.geoObjects.get(0).properties.getAll();
$('#address').val(data.text);
});
});
myMap.geoObjects.add(myPlacemark);
myMap.setCenter(coord, 15);
});
}
</script>
❌ 出现错误,示例 1(字段)。
假设我们将地图中心和气球本身的坐标设置为45.573370, 42.975792
实际上,我们得到的地图的中心和标签在不同的地方(大约)45.781270891414714,42.65513599999969这不是正确的地方!
❌ 出现错误,示例 2(字段)。
假设我们将地图中心和气球本身的坐标设置为46.780526, 40.862630
实际上,我们得到的地图有一个中心和一个标签在不同的地方(大约)46.817641157742884,40.70974364418027这不是正确的地方!
✅ 工作正常,示例 3(城市)。
假设我们将地图中心和气球本身的坐标设置为47.222078, 39.720358
实际上,我们得到的地图的中心和标签位于不同的位置(大约)47.22393713061284,39.72794710058595是正确的位置。
粗略地说,规律性——取自场区的坐标并没有画出正确显示的地图。取自市区的坐标 - 正确绘制地图。
我已经写信给 Yandex - 他们说他们正在制定所有规则。这几天我一直在修改这个问题,我决定在这里写。
我检查了沙箱中字段和城市的坐标 - https://yandex.ru/dev/maps/jsbox/2.1/icon_customImage/一切正常。回到代码 - 上面描述了一个奇怪的模式。