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. |
DDanser,
Цитата:
Цитата:
|
Цитата:
|
DDanser,
Если превысили 2500 в день - бесплатность кончается |
Цитата:
|
DDanser,
Ну, я думаю, Сбербанк платит за использование АПИ |
Цитата:
Давайте зайдем с другой стороны. Можете подсказать какой код использовать чтобы по клику ставить маркер в определенной точке? Я только начинаю изучать JS в силу возникших потребностей. Насколько я понял делается это через указание широты и долготы через click (). Прочитал мануалы Гугла но либо моих познаний не хватает, либо и правда такой информации нету, и надо написать самому. |
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,
Прошу прощения. Вы мне и так помогаете, я еще неправильно объясняю суть. Можно ли, снизу карты написать, допустим, Москва. Сделать "Москву" ссылкой, при нажатии на которую будет ставиться маркер на "Москве"? |
Цитата:
https://developers.google.com/maps/d...ntro?hl=ru#BYB |
Dilettante_Pro,
Геокодирование – процесс преобразования адресов (например, "1600 Amphitheatre Parkway, Mountain View, CA") в географические координаты (например, широта 37,423021 и долгота -122,083739), которые можно использовать для размещения маркеров на карте или ее позиционирования. Т.е. получается если использовать широту и долготу, то необязательно подключать свой ключ. И если выводить маркер по широте\долготе при клике на ссылку, то это вполне так себе реально реализовать? |
DDanser,
Геокодирование нужно, если вы не знаете координат нужного места и определяете их по адресу. Если вы их знаете - то можете ставить маркер по известным координатам без геокодирования |
Dilettante_Pro,
А какой код нужно использовать чтобы искать и добавлять метку по клику по ширине\долготе? :) |
DDanser,
Попробуйте покликать по Рим Москва под картой <!DOCTYPE html> <html> <head> <title>Sample Map</title> <meta charset="utf-8"> <script src="http://maps.google.com/maps/api/js"> </script> <script> var map; var places = [{ city: "Рим", LatLng: { lat: 41.881576, lng: 12.495232} }, { city: "Москва", LatLng: { lat: 55.755833, lng: 37.617778}}]; 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 }; map = new google.maps.Map(e, t); }; google.maps.event.addDomListener(window, 'load', e); function setmarker(elem) { var cityname = elem.innerText; for (var i = 0; i < places.length; i++) { if (places[i].city == cityname) { marker = new google.maps.Marker({ position: places[i].LatLng, map: map, title: places[i].city }); marker.setMap(map); map.setCenter(places[i].LatLng); } } } </script> </head> <body> <div id="map" style="width: 800px; height: 400px;"> </div> <div onclick="setmarker(this)">Рим</div> <div onclick="setmarker(this)">Москва</div> </body> </html> |
Часовой пояс GMT +3, время: 18:26. |