function setCenter () {
myMap.setCenter([57.767265, 40.925358]);
}
const cityList = new ymaps.control.ListBox({
data: {
content: 'Select a city'
},
items: [
new ymaps.control.ListBoxItem('Moscow'),
new ymaps.control.ListBoxItem('Novosibirsk'),
new ymaps.control.ListBoxItem({
options: {
type: 'separator'
}
}),
new ymaps.control.ListBoxItem('New York'), ]
});
cityList.get(0)
.events.add('click', function () {
myMap.setCenter([55.752736, 37.606815]);
});
cityList.get(1)
.events.add('click', function () {
myMap.setCenter([55.026366, 82.907803]);
});
cityList.get(3)
.events.add('click', function () {
myMap.setCenter([40.695537, -73.97552]);
});
myMap.controls.add(cityList, {
floatIndex: 0
});
import typing
import requests
from yandex_geocoder.exceptions import (
YandexGeocoderAddressNotFound,
YandexGeocoderHttpException,
)
class Client:
"""Yandex geocoder API client.
:Example:
>>> from yandex_geocoder import Client
>>> Client.coordinates('Хабаровск 60 октября 150')
('135.114326', '48.47839')
"""
API_URL = "https://geocode-maps.yandex.ru/1.x/"
PARAMS = {"format": "json"}
@classmethod
def request(cls, address: str) -> dict:
"""Requests passed address and returns content of `response` key.
Raises `YandexGeocoderHttpException` if response's status code is
different from `200`.
"""
response = requests.get(
cls.API_URL, params=dict(geocode=address, **cls.PARAMS)
)
if response.status_code != 200:
raise YandexGeocoderHttpException(
"Non-200 response from yandex geocoder"
)
return response.json()["response"]
@classmethod
def coordinates(cls, address: str) -> typing.Tuple[str, str]:
"""Returns a tuple of ccordinates (longtitude, latitude) for
passed address.
Raises `YandexGeocoderAddressNotFound` if nothing found.
"""
data = cls.request(address)["GeoObjectCollection"]["featureMember"]
if not data:
raise YandexGeocoderAddressNotFound(
'"{}" not found'.format(address)
)
coordinates = data[0]["GeoObject"]["Point"]["pos"] # type: str
return tuple(coordinates.split(" "))
Как этой точке назначить события мыши?
myPlacemark.events
.add('mouseenter', function (e) { // mouseenter, mouseleave etc...
\\ you code here
})
ymaps.Map
с нужными вам настройками (center, zoom)где можно установить метки, а потом в интерфейсе строить между ними автомобильные маршруты в произвольном порядке (менять начальную и конечную точки из набора меток)?
мне же нужно, чтобы можно было интерактивно менять точку выезда и точку прибытия из заданного набора
из заданного набора
// Строим маршрут из Королева в Красногорск через Химки и Мытищи, где Мытищи - транзитная точка.
// Красногорск зададим координатами.
ymaps.route([
'Королев',
{ type: 'viaPoint', point: 'Мытищи' },
'Химки',
{ type: 'wayPoint', point: [55.811511, 37.312518] }
], {
mapStateAutoApply: true
}).then(function (route) {
route.getPaths().options.set({
// в балуне выводим только информацию о времени движения с учетом пробок
balloonContentBodyLayout: ymaps.templateLayoutFactory.createClass('$[properties.humanJamsTime]'),
// можно выставить настройки графики маршруту
strokeColor: '0000ffff',
opacity: 0.9
});
// добавляем маршрут на карту
map.geoObjects.add(route);
});
fitToViewport()
<!DOCTYPE html>
<html>
<head>
<title>Добавление метки на карту</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--
Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
-->
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<ваш API-ключ>" type="text/javascript"></script>
<script src="placemark.js" type="text/javascript"></script>
<style>
html, body, #map {
width: 100%; height: 100%; padding: 0; margin: 0;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</html>
ymaps.ready(init);
function init() {
var myMap = new ymaps.Map("map", {
center: [55.76, 37.64],
zoom: 10
}, {
searchControlProvider: 'yandex#search'
});
myMap.geoObjects
.add(new ymaps.Placemark([55.694843, 37.435023], {
iconCaption: 'Очень длиннный, но невероятно интересный текст'
}, {
preset: 'islands#redDotIconWithCaption'
}));
}
$(window).resize(function () {
if ($(window).width() < 576) {
myMap.setCenter([57.767265, 40.925358]);
}
});
function myFunction(x) {
if (x.matches) { // If media query matches
myMap.setCenter([57.767265, 40.925358]);
}
}
var x = window.matchMedia("(max-width: 576px)")
myFunction(x) // Call listener function at run time
x.addListener(myFunction) // Attach listener function on state changes
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
center: [55.75985606898725,37.61054750000002],
zoom: 12
}, {
searchControlProvider: 'yandex#search'
}),
myPlacemark = new ymaps.Placemark([55.75985606898725,37.61054750000002], {
// Чтобы балун и хинт открывались на метке, необходимо задать ей определенные свойства.
balloonContentHeader: "Балун метки",
balloonContentBody: "Содержимое <em>балуна</em> метки",
balloonContentFooter: "Подвал",
hintContent: "Хинт метки"
});
myMap.geoObjects.add(myPlacemark);
// Открываем балун на карте (без привязки к геообъекту).
myMap.balloon.open([55.7591,37.61053], "Содержимое балуна", {
// Опция: не показываем кнопку закрытия.
closeButton: false
});
// Показываем хинт на карте (без привязки к геообъекту).
myMap.hint.open(myMap.getCenter(), "Одинокий хинт без метки", {
// Опция: задержка перед открытием.
openTimeout: 1500
});
}
ymaps.ready(init);
function init() {
let myMap = new ymaps.Map('map', {
center: [55.755814, 37.617635],
zoom: 14,
controls: ['routeButtonControl', 'typeSelector', 'fullscreenControl'],
}, {
searchControlProvider: 'yandex#search'
}),
objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 64,
clusterIconLayout: "default#pieChart"
});
myMap.geoObjects.add(objectManager);
let listBoxItems = ['2G', '3G', '4G'].map(function(title) {
return new ymaps.control.ListBoxItem({
data: {
content: title
},
state: {
selected: true
}
})
}),
listBoxControl = new ymaps.control.ListBox({
data: {
content: 'Filter',
title: 'Filter'
},
items: listBoxItems,
state: {
expanded: true,
filters: listBoxItems.reduce(function(filters, filter) {
filters[filter.data.get('content')] = filter.isSelected();
return filters;
}, {})
}
});
myMap.controls.add(listBoxControl);
listBoxControl.events.add(['select', 'deselect'], function(e) {
let listBoxItem = e.get('target');
let filters = ymaps.util.extend({}, listBoxControl.state.get('filters'));
filters[listBoxItem.data.get('content')] = listBoxItem.isSelected();
listBoxControl.state.set('filters', filters);
});
let filterMonitor = new ymaps.Monitor(listBoxControl.state);
filterMonitor.add('filters', function(filters) {
objectManager.setFilter(getFilterFunction(filters));
});
function getBand(e, i, a){
let Band = this.valueOf();
return e === Band;
}
function getFilterFunction(categories){
return function(obj){
let bsBands = obj.has_bands;
let has2G = bsBands.find(getBand, '2G');
let has3G = bsBands.find(getBand, '3G');
let has4G = bsBands.find(getBand, '4G');
return (categories['2G'] && has2G) || (categories['3G'] && has3G) || (categories['4G'] && has4G);
}
}
let data = {
"count": 4,
"next": null,
"previous": null,
"type": "FeatureCollection",
"features": [
{
"id": 1,
"region_prefix": "97",
"cell_site_number": 1,
"description": "",
"address": "",
"commissioning": "",
"bs_id": "",
"height_asl": 0,
"bands": [
{
"name": "2G",
"frequency": "900"
},
{
"name": "2G",
"frequency": "1800"
}
],
"status": true,
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [55.755815, 37.613]
},
"properties": {
"balloonContentHeader": "balloonContentHeader",
"balloonContentBody": "balloonContentBody",
"balloonContentFooter": "balloonContentFooter",
"clusterCaption": "clusterCaption",
"hintContent": "hintContent",
"iconCaption": "2G"
},
"has_bands": [
"2G"
]
},
{
"id": 2,
"region_prefix": "97",
"cell_site_number": 2,
"description": "",
"address": "",
"commissioning": "",
"bs_id": "",
"height_asl": 0,
"bands": [
{
"name": "2G",
"frequency": "900"
},
{
"name": "2G",
"frequency": "1800"
},
{
"name": "3G",
"frequency": "2100"
},
{
"name": "4G",
"frequency": "1800"
},
{
"name": "4G TDD",
"frequency": "2600"
}
],
"status": true,
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [55.759, 37.613]
},
"properties": {
"balloonContentHeader": "balloonContentHeader",
"balloonContentBody": "balloonContentBody",
"balloonContentFooter": "balloonContentFooter",
"clusterCaption": "clusterCaption",
"hintContent": "hintContent",
"iconCaption": "2G 3G 4G"
},
"has_bands": [
"3G",
"2G",
"4G"
]
},
{
"id": 3,
"region_prefix": "97",
"cell_site_number": 3,
"description": "",
"address": "",
"commissioning": "",
"bs_id": "",
"height_asl": 0,
"bands": [
{
"name": "3G",
"frequency": "2100"
}
],
"status": true,
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [55.7204, 37.6167]
},
"properties": {
"balloonContentHeader": "balloonContentHeader",
"balloonContentBody": "balloonContentBody",
"balloonContentFooter": "balloonContentFooter",
"clusterCaption": "clusterCaption",
"hintContent": "hintContent",
"iconCaption": "3G"
},
"has_bands": [
"3G",
]
},
{
"id": 4,
"region_prefix": "97",
"cell_site_number": 4,
"description": "",
"address": "",
"commissioning": "",
"bs_id": "",
"height_asl": 0,
"bands": [
{
"name": "4G",
"frequency": "1800"
},
{
"name": "4G TDD",
"frequency": "2600"
}
],
"status": true,
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [55.7704, 37.6119]
},
"properties": {
"balloonContentHeader": "balloonContentHeader",
"balloonContentBody": "balloonContentBody",
"balloonContentFooter": "balloonContentFooter",
"clusterCaption": "clusterCaption",
"hintContent": "hintContent",
"iconCaption": "4G"
},
"has_bands": [
"4G"
]
}]}
objectManager.add(data);
}