Я пытаюсь создать Google Map на основе результатов из базы данных. Я могу получить адреса, геокодированные и выведенные на карту, но я не могу сделать это очень быстро. У меня есть функция setTimeout, которая помогает с загрузкой маркеров; если я не включу его, то не все маркеры будут загружаться.Загрузка динамиков карт google динамически динамически
Есть ли способ, чтобы я быстро вывел маркеры? Кроме того, маркеры также будут иметь InfoWindows. Примечание. Я использую ColdFusion и SQL. Here is what happens. Вот мой код до сих пор:
<body onLoad="initialize()">
<div id="map_canvas" class="grid_12">
</div>
</div>
<!end .container_12>
</body>
<script type="text/javascript">
function initialize(){
// Prepare the array from ColdFusion and database
var locations = [
<cfset locationArray=ArrayNew(1)>
<cfloop query="GetLocations">
<cfscript>
ArrayAppend(locationArray, #Client_Address# & ' ' & #Client_City# & ' ' & #Client_State# & ' ' & #Client_Company#);
</cfscript>
'<cfoutput>#Client_Address# #Client_City# #Client_State#</cfoutput>',
</cfloop>
];
//Set options of the google map
var mapOpt = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: new google.maps.LatLng(42.48019996901214, -90.670166015625),
zoom: 8
};
//Create new map
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOpt);
var geocoder = new google.maps.Geocoder();
var index = 0;
//Begin geocoding function converting addresses to LatLng
var geocoderFunction = function() {
geocoder.geocode({ 'address': locations[index] }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: ''
});
}
// Call the geocoder with a 150ms delay
index++;
if (locations.length > index) {
setTimeout(geocoderFunction, 150);
}
});
}
// Launch the geocoding process
geocoderFunction();
}
</script>
</html>
Я довольно новичок в этом, так что любая помощь будет оценен по достоинству!
вот как я это сделал: http://anglerweb.com/fishingreports/Create Эта страница используется, чтобы добавить отчет о промысле в место рыбалки. в основном, вам нужно найти место для рыбалки и нажать на него, чтобы выбрать. когда вы перемещаетесь по карте, она отображает пятна промысла в качестве маркеров после задержки. но он показывает все маркеры быстро. – akonsu
При загрузке страницы родительский документ загружается быстро. Карта занимает секунду, затем появляются маркеры. Однако, к моменту загрузки родительского документа и загрузки карты, CF завершил работу. Медленная часть - это то, что выполняется * после * родительских нагрузок. @LarsH указал, что, вероятно, станет моим первым шагом в попытке оптимизировать это. –