Vários marcadores Google Map API v3 da matriz de endereços e evitar OVER_QUERY_LIMIT ao geocodificar em pageLoad

Eu tenho que implementar a funcionalidade de marcadores múltiplos de matriz de endereços. A cadeia de endereços está sendo buscada no database.

Minha matriz de endereços se parece com isso

var address = ; 

Já passei por tantos exemplos na internet e até mesmo neste fórum, mas na maioria dos exemplos a latitude e a longitude já estão disponíveis nesses bancos de dados. Existe alguma maneira para que eu use essa matriz de endereço e coloque vários marcadores no google map. ou algum exemplo onde esse tipo de conceito é explicado ?!

Eu pratiquei este exemplo a partir do JSFIDDLE, mas não estou obtendo nenhuma saída.

   var geocoder; var map; var markersArray = []; function initialize() { geocoder = new google.maps.Geocoder(); latlang = geocoder.geocode( { 'address': 'New Delhi, India'}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); markersArray.push(marker); } else { alert("Geocode was not successful for the following reason: " + status); } }); var myOptions = { center: latlang, zoom: 5, mapTypeId: google.maps.MapTypeId.SATELLITE, navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL } }; map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); plotMarkers(); } var locationsArray = new Array( "New Delhi, India", "Gurgaon,Haryana, India", "Mumbai, India", "Noida Sector-63,India","Banglore, Karnataka,India"); function plotMarkers(){ for(var i = 0; i < locationsArray.length; i++){ codeAddresses(locationsArray[i]); } } function codeAddresses(address){ geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); //markersArray.push(marker); } else{ alert("Geocode was not successful for the following reason: " + status); } }); } google.maps.event.addDomListener(window, 'load', initialize);  

Independentemente da sua situação, aqui está uma demonstração de trabalho que cria marcadores no mapa com base em uma matriz de endereços.

http://jsfiddle.net/P2QhE/

Código Javascript incorporado também:

 $(document).ready(function () { var map; var elevator; var myOptions = { zoom: 1, center: new google.maps.LatLng(0, 0), mapTypeId: 'terrain' }; map = new google.maps.Map($('#map_canvas')[0], myOptions); var addresses = ['Norway', 'Africa', 'Asia','North America','South America']; for (var x = 0; x < addresses.length; x++) { $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x]+'&sensor=false', null, function (data) { var p = data.results[0].geometry.location var latlng = new google.maps.LatLng(p.lat, p.lng); new google.maps.Marker({ position: latlng, map: map }); }); } }); 

Responda para adicionar vários marcadores.

ATUALIZAÇÃO (ENDEREÇOS MÚLTIPLOS GEOCODE)

Aqui está o Exemplo de Geocodificação de Exemplo com vários endereços.

    

Como podemos resolver esse problema com a function setTimeout() .

Ainda assim, não devemos geocodificar os locais conhecidos toda vez que você carregar sua página, como dito por @geocodezip

Outras alternativas são bem explicadas nos seguintes links:

Como evitar o limite de geocódigo do GoogleMap!

Geocode Tutorial De Múltiplos Endereços Por Mike Williams

Exemplo dos desenvolvedores do Google

Aqui está a minha solução:

dependencies: Gmaps.js, jQuery

 var Maps = function($) { var lost_addresses = [], geocode_count = 0; var addMarker = function() { console.log('Marker Added!') }; return { getGecodeFor: function(addresses) { var latlng; lost_addresses = []; for(i=0;i 0) { this.getGeocodeFor(lost_addresses); } } }; }(jQuery); Maps.getGeocodeFor(address); // listen to done:geocode event and process the lost addresses after 1.5s $(document).on('done:geocode', function() { setTimeout(function() { Maps.processLostAddresses(); }, 1500); });