var map;
var geocoder;
var marker;
var markers = new Array();
// Czech Republic
//var basePoint = new google.maps.LatLng(49.74799973900054, 15.38134765625);
//var baseZoom = 7;
//var maxAutoZoom = 15;
//Praha 4, Praha 10 main page
var baseNElat = 50.113529792565;
var baseNElng = 14.744673448797;
var baseSWlat = 50.003322203415;
var baseSWlng = 14.407187181707;
var gpsFromMap = false;
// Marker Options
var markerOptions = new Object();
markerOptions.clickable = true;
markerOptions.visible = true;
$(document).ready(function() {
initMap();
bindEvents();
});
function bindEvents() {
google.maps.event.addListener(map, 'dragend', function() {
updateResults();
});
google.maps.event.addListener(map, 'zoom_changed', function() {
setTimeout(function() {
updateResults();
}, 500);
});
}
function initMap() {
geocoder = new google.maps.Geocoder();
map = amap.initCanvas('mapCanvas', null, true);
markerOptions.map = map;
// zamerit na gps z formulare
NElat = $("#NElat").val();
NElng = $("#NElng").val();
SWlat = $("#SWlat").val();
SWlng = $("#SWlng").val();
if(NElat && NElng && SWlat && SWlng) {
NE = amap.createPoint(NElat, NElng);
SW = amap.createPoint(SWlat, SWlng);
bounds = new google.maps.LatLngBounds(SW, NE);
amap.setViewport(bounds);
} else {
NE = amap.createPoint(baseNElat, baseNElng);
SW = amap.createPoint(baseSWlat, baseSWlng);
bounds = new google.maps.LatLngBounds(SW, NE);
amap.setViewport(bounds);
}
// google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
// updateResults();
// });
}
function updateResults() {
amap.updateElements();
var form = $("#search-form form");
var url = '/hledani/get-results';
var values = {};
$.each(form.serializeArray(), function(i, field) {
values[field.name] = field.value;
});
var zoom = map.getZoom();
$.ajax({
type: "POST",
url: url,
data: values,
dataType: "text",
success: function(data) {
data = $.parseJSON(data);
if (data && zoom == map.getZoom()) {
processResults(data);
}
}
});
}
function downloadAdvert(id, callback) {
var url = '/hledani/get-results';
$.ajax({
type: "POST",
url: url,
data: {advert_id : id},
dataType: "text",
success: function(data) {
data = $.parseJSON(data);
if (data) {
processResults(data);
}
if (typeof callback == "function") {
callback(id, data);
}
}
});
}
/**
* Update markers on the map
*
* @param data json format
*/
function updateMap(data) {
var bounds = new google.maps.LatLngBounds();
$.each(data, function(index, item) {
var point = amap.createPoint(item.lat, item.lng);
if (typeof markers[item.id] != "Object") {
markerOptions.position = point;
markerOptions.title = item.title;
markerOptions.icon = getIcon();
var text = composeAdvertContent(item.title, item.text, item.detailUri, item.thumbImgSrc);
marker = amap.createMarker(point, item.title, text, getIcon(), markerOptions, null);
markers[item.id] = marker;
bounds.extend(point);
}
});
}
function processResults(data) {
if (data.adverts) {
if (data.adverts.length >= 100) {
//$("#mapMessage").html("Zobrazení na mapě je omezeno na " + data.adverts.length + " inzerátů
Pro přesnější výsledky upřesněte kritéria a lokalitu");
$("#mapMessage").show();
} else {
//$("#mapMessage").html("");
$("#mapMessage").hide();
}
amap.clearOverlays();
updateMap(data.adverts);
}
}
/**
* Compose content for advert point bubble
*
* @param string title
* @param string text
* @param string detailUri
* @param string imgSrc
* @return string HTML code
*/
function composeAdvertContent(title, text, detailUri, imgSrc) {
var content = "