wikipoints/public/js/main.js

143 lines
3.8 KiB
JavaScript

/*
* Let's GO!
*/
ymaps.ready(init);
var myMap;
var categories;
function init() {
myMap = new ymaps.Map("map", {
center: [59.9, 30.3],
zoom: 9,
behaviors: ['default', 'scrollZoom']
});
myMap.controls.add('mapTools');
myMap.controls.add('typeSelector');
myMap.controls.add('smallZoomControl');
myMap.controls.add('scaleLine');
initCategories()
getPoints();
myMap.events.add('click', function (e) {
if (!myMap.balloon.isOpen()) {
if ( $('#addPointButton').hasClass('btn-success') )
{
coords = e.get('coordPosition');
$('#lat').val(coords[0].toPrecision(11));
$('#lng').val(coords[1].toPrecision(11));
$('#addPointModal').modal('show');
}
}
else {
myMap.balloon.close();
}
});
}
function getPoints()
{
$.ajax({
url: "/json/points/",
success: function(data){
for(var k in data) {
myPlacemark = new ymaps.Placemark(
[data[k]['lat'], data[k]['lng']], {
hintContent: data[k]['name'],
balloonContent:
'<div class="infoCard">' +
'<img src="'+data[k]['img']+'" />' +
'<h3>'+data[k]['name']+'</h3>' +
data[k]['description'] +
' <a href="'+data[k]['source']+'" target="blank">Подробнее...</a></div>'
},{iconImageHref: data[k]['categoryIcon'], iconImageSize: [32, 37]});
myMap.geoObjects.add(myPlacemark);
}
}
});
return true;
}
function initCategories()
{
$.ajax({
url: "/json/categories/",
success: function(data){
for(var k in data) {
categories = categories + '<option value="'+data[k]['id']+'">'+data[k]['name']+'</option>';
}
}
});
return true;
}
function searchAdderess()
{
var myGeocoder = ymaps.geocode($('#addressField').val());
myGeocoder.then(
function (res) {
myMap.setCenter(res.geoObjects.get(0).geometry.getCoordinates(), 13);
},
function (err) {}
);
}
function showMeOnTheMap()
{
var userLat = 0;
var userLng = 0;
navigator.geolocation.getCurrentPosition(function(pos) {
userLat = pos.coords.latitude;
userLng = pos.coords.longitude;
myMap.geoObjects.add(
new ymaps.Placemark(
[userLat, userLng],
{
balloonContentHeader: ymaps.geolocation.country,
balloonContent: ymaps.geolocation.city,
balloonContentFooter: ymaps.geolocation.region
},
{
iconImageHref: '/ico/man.png',
iconImageSize: [32, 37]
}
)
);
myMap.setCenter([userLat, userLng]);
}, function(){
userLat = ymaps.geolocation.latitude;
userLng = ymaps.geolocation.longitude;
myMap.geoObjects.add(
new ymaps.Placemark(
[userLat, userLng],
{
balloonContentHeader: ymaps.geolocation.country,
balloonContent: ymaps.geolocation.city,
balloonContentFooter: ymaps.geolocation.region
},
{
iconImageHref: '/ico/man.png',
iconImageSize: [32, 37]
}
)
);
myMap.setCenter([userLat, userLng]);
});
}
function tryAddPoint(el)
{
$(el).toggleClass('btn-success').toggleClass('btn-default');
if ( $('#addPointButton').hasClass('btn-success') )
myMap.cursors.push('crosshair');
else
myMap.cursors.push('arrow');
}