26.05.2016, 16:12
|
Новичок на форуме
|
|
Регистрация: 26.05.2016
Сообщений: 7
|
|
GoogleAPI-v3 и OVER_QUERY_LIMIT
Добрый день. Подскажите пожалуйста. Есть такой JS:
var geocoder;
var map;
var query = new Array('Москва, Измайловский Вал, 20с1', 'Тула, площадь Крестовоздвижненская', 'Смоленск, ул. Глинки, 7', 'Калуга, ул. Кирова, 21А', 'Санкт-Петербург, Невский проспект, 38/4', 'Псков, Октябрьский проспект, 29/25', 'Калининград, Московский проспект, 24', 'Архангельск, Ломоносова проспект, 137/19', 'Ярославль, Ленина проспект, 25', 'Вологда, ул. Предтеченская, 33', 'Иваново, ул. Лежневская, 157', '');
var idArr = new Array('mp0', 'mp1', 'mp2', 'mp3', 'mp4', 'mp5', 'mp6', 'mp7', 'mp8', 'mp9', 'mp10');
function initialize() {
geocoder = new google.maps.Geocoder();
var mapOptions = {
zoom: 15
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
codeAddress();
}
function codeAddress() {
for (var i = 0; i < query.length; i++) {
var address = query[i];
geocoder.geocode({
'address': address
}, function(k) {
return function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var a = document.getElementById(idArr[k]);
a.onclick = function() {
map.setZoom(17);
map.setCenter(results[0].geometry.location);
}
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
}
}(i));
}
}
google.maps.event.addDomListener(window, 'load', initialize);
Данный скрипт переводит камеру, на изначально созданные маркеры. Меня это вполне бы устроило, но почему то при попытке добавить новый объект, возникает ошибка "OVER_QUERY_LIMIT". Побродив по американским форумам, понял что это изза того что одновременно очень много запросов идет, и гугл ругается. Можно ли как то реализовать такую возможность, чтобы при каждом новом клике создавался новый маркер, а старый стирался?
Так же прикладываю ссылку на CodePen.
|
|
26.05.2016, 17:04
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
DDanser,
Сообщение от DDanser
|
одновременно очень много запросов идет
|
Пожалуй, не одновременно:
Цитата:
|
Веб-службы
СТАНДАРТНЫЙ
Google Maps Directions API
Google Maps Distance Matrix API 3
Google Maps Elevation API
Google Maps Geocoding API
Google Maps Geolocation API
Google Maps Roads API
Google Maps Time Zone API
До 2 500 бесплатных запросов в день
0,50 долларов США за каждую дополнительную 1000 запросов, до 100 000 в день
|
Источник - https://developers.google.com/maps/p...d-plans/?hl=ru
|
|
26.05.2016, 17:07
|
Новичок на форуме
|
|
Регистрация: 26.05.2016
Сообщений: 7
|
|
Читал) но не очень понял, что это значит
|
|
26.05.2016, 17:31
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
DDanser,
Если превысили 2500 в день - бесплатность кончается
|
|
26.05.2016, 17:48
|
Новичок на форуме
|
|
Регистрация: 26.05.2016
Сообщений: 7
|
|
Сообщение от Dilettante_Pro
|
DDanser,
Если превысили 2500 в день - бесплатность кончается
|
Т.е. примерно так > http://www.sberleasing.ru/ru/contacts/ сделать невозможно?
|
|
26.05.2016, 18:22
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
DDanser,
Ну, я думаю, Сбербанк платит за использование АПИ
|
|
27.05.2016, 09:08
|
Новичок на форуме
|
|
Регистрация: 26.05.2016
Сообщений: 7
|
|
Сообщение от Dilettante_Pro
|
DDanser,
Ну, я думаю, Сбербанк платит за использование АПИ
|
Что то я в сомнениях наверное.
Давайте зайдем с другой стороны.
Можете подсказать какой код использовать чтобы по клику ставить маркер в определенной точке? Я только начинаю изучать JS в силу возникших потребностей. Насколько я понял делается это через указание широты и долготы через click (). Прочитал мануалы Гугла но либо моих познаний не хватает, либо и правда такой информации нету, и надо написать самому.
|
|
27.05.2016, 10:32
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
DDanser,
<!DOCTYPE html>
<html>
<head>
<title>Sample Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<script src="http://maps.google.com/maps/api/js"> </script>
<script>
function e() {
var centerLatLng = { lat: 41.881576, lng: 12.495232 };
var e = document.getElementById("map"),
t = {
center: centerLatLng,
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(e, t);
google.maps.event.addListener(map, "click", function (ev) {
var location = ev.latLng;
marker = new google.maps.Marker({
position: location,
map: map,
title: 'Новый маркер'
});
marker.setMap(map);
});
};
google.maps.event.addDomListener(window, 'load', e);
</script>
</head>
<body>
<div id="map" style="width: 600px; height: 400px;">
</div>
</body>
</html>
Последний раз редактировалось Dilettante_Pro, 27.05.2016 в 10:35.
|
|
27.05.2016, 11:20
|
Новичок на форуме
|
|
Регистрация: 26.05.2016
Сообщений: 7
|
|
Dilettante_Pro,
Прошу прощения. Вы мне и так помогаете, я еще неправильно объясняю суть. Можно ли, снизу карты написать, допустим, Москва. Сделать "Москву" ссылкой, при нажатии на которую будет ставиться маркер на "Москве"?
|
|
27.05.2016, 13:00
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от DDanser
|
Dilettante_Pro,
Прошу прощения. Вы мне и так помогаете, я еще неправильно объясняю суть. Можно ли, снизу карты написать, допустим, Москва. Сделать "Москву" ссылкой, при нажатии на которую будет ставиться маркер на "Москве"?
|
Для работы в таком режиме уже нужно геокодирование со всеми вытекающими....
https://developers.google.com/maps/d...ntro?hl=ru#BYB
|
|
|
|