Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.05.2016, 16:12
Новичок на форуме
Отправить личное сообщение для DDanser Посмотреть профиль Найти все сообщения от DDanser
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 26.05.2016, 17:04
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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
Ответить с цитированием
  #3 (permalink)  
Старый 26.05.2016, 17:07
Новичок на форуме
Отправить личное сообщение для DDanser Посмотреть профиль Найти все сообщения от DDanser
 
Регистрация: 26.05.2016
Сообщений: 7

Сообщение от Dilettante_Pro Посмотреть сообщение
DDanser,

Пожалуй, не одновременно:

Источник - https://developers.google.com/maps/p...d-plans/?hl=ru
Читал) но не очень понял, что это значит
Ответить с цитированием
  #4 (permalink)  
Старый 26.05.2016, 17:31
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DDanser,
Если превысили 2500 в день - бесплатность кончается
Ответить с цитированием
  #5 (permalink)  
Старый 26.05.2016, 17:48
Новичок на форуме
Отправить личное сообщение для DDanser Посмотреть профиль Найти все сообщения от DDanser
 
Регистрация: 26.05.2016
Сообщений: 7

Сообщение от Dilettante_Pro Посмотреть сообщение
DDanser,
Если превысили 2500 в день - бесплатность кончается
Т.е. примерно так > http://www.sberleasing.ru/ru/contacts/ сделать невозможно?
Ответить с цитированием
  #6 (permalink)  
Старый 26.05.2016, 18:22
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DDanser,
Ну, я думаю, Сбербанк платит за использование АПИ
Ответить с цитированием
  #7 (permalink)  
Старый 27.05.2016, 09:08
Новичок на форуме
Отправить личное сообщение для DDanser Посмотреть профиль Найти все сообщения от DDanser
 
Регистрация: 26.05.2016
Сообщений: 7

Сообщение от Dilettante_Pro Посмотреть сообщение
DDanser,
Ну, я думаю, Сбербанк платит за использование АПИ
Что то я в сомнениях наверное.
Давайте зайдем с другой стороны.
Можете подсказать какой код использовать чтобы по клику ставить маркер в определенной точке? Я только начинаю изучать JS в силу возникших потребностей. Насколько я понял делается это через указание широты и долготы через click (). Прочитал мануалы Гугла но либо моих познаний не хватает, либо и правда такой информации нету, и надо написать самому.
Ответить с цитированием
  #8 (permalink)  
Старый 27.05.2016, 10:32
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 27.05.2016, 11:20
Новичок на форуме
Отправить личное сообщение для DDanser Посмотреть профиль Найти все сообщения от DDanser
 
Регистрация: 26.05.2016
Сообщений: 7

Dilettante_Pro,
Прошу прощения. Вы мне и так помогаете, я еще неправильно объясняю суть. Можно ли, снизу карты написать, допустим, Москва. Сделать "Москву" ссылкой, при нажатии на которую будет ставиться маркер на "Москве"?
Ответить с цитированием
  #10 (permalink)  
Старый 27.05.2016, 13:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от DDanser Посмотреть сообщение
Dilettante_Pro,
Прошу прощения. Вы мне и так помогаете, я еще неправильно объясняю суть. Можно ли, снизу карты написать, допустим, Москва. Сделать "Москву" ссылкой, при нажатии на которую будет ставиться маркер на "Москве"?
Для работы в таком режиме уже нужно геокодирование со всеми вытекающими....
https://developers.google.com/maps/d...ntro?hl=ru#BYB
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск