1/*global $,oms,WpstateMarker,wpestate_start_filtering_ajax,control_vars,googlecode_regular_vars,wpestate_custom_search_start_filtering_ajax,ajaxcalls_vars,MarkerClusterer,map,google,OverlappingMarkerSpiderfier,gmarkers, Modernizr , InfoBox,google_map_submit_vars ,mapfunctions_vars, googlecode_home_vars,jQuery,googlecode_property_vars*/ 2var pin_images=mapfunctions_vars.pin_images; 3var images = jQuery.parseJSON(pin_images); 4var ipad_time=0; 5var infobox_id=0; 6var shape = { 7 coord: [1, 1, 1, 38, 38, 59, 59 , 1], 8 type: 'poly' 9 }; 10 11var mcOptions; 12var mcluster; 13var clusterStyles; 14var pin_hover_storage; 15var first_time_wpestate_show_inpage_ajax_half=0; 16var panorama; 17var infoBox_sh=null; 18 19var poi_type=''; 20var placeCircle=''; 21var initialGeop=0; 22var heading=0; 23var width_browser=null; 24var infobox_width=null; 25var wraper_height=null; 26var info_image=null; 27var vertical_pan=-190; 28var vertical_off=150; 29var curent_gview_lat = jQuery('#gmap_wrapper').attr('data-cur_lat'); 30var curent_gview_long = jQuery('#gmap_wrapper').attr('data-cur_long'); 31var bounds_list; 32var circleLayer=''; 33 34 35function wpestate_agency_map_function(){ 36 "use strict"; 37 var curent_gview_lat = jQuery('#agency_map').attr('data-cur_lat'); 38 var curent_gview_long = jQuery('#agency_map').attr('data-cur_long'); 39 40 41 42 if(mapfunctions_vars.geolocation_type==1){ 43 44 45 var mapOptions_intern = { 46 flat:false, 47 noClear:false, 48 zoom: 15, 49 scrollwheel: false, 50 draggable: true, 51 center: new google.maps.LatLng(curent_gview_lat,curent_gview_long ), 52 streetViewControl:false, 53 disableDefaultUI: true, 54 mapTypeId: mapfunctions_vars.type.toLowerCase(), 55 gestureHandling: 'cooperative' 56 }; 57 58 59 var map_agency= new google.maps.Map(document.getElementById('agency_map'), mapOptions_intern); 60 if(mapfunctions_vars.map_style !==''){ 61 var styles = JSON.parse ( mapfunctions_vars.map_style ); 62 map_agency.setOptions({styles: styles}); 63 } 64 65 google.maps.visualRefresh = true; 66 google.maps.event.trigger(map_agency, 'resize'); 67 68 69 70 var myLatLng = new google.maps.LatLng(curent_gview_lat, curent_gview_long); 71 var marker = new google.maps.Marker({ 72 position: myLatLng, 73 map: map_agency, 74 icon: wpesate_custompin_agency(), 75 shape: shape, 76 title: 'we are here', 77 zIndex: 1, 78 infoWindowIndex : 0 79 }); 80 81 }else{ 82 wpresidence_agency_dev_map(curent_gview_lat,curent_gview_long,'agency_map'); 83 } 84 85 86 87} 88 89 90 91function wpresidence_agency_dev_map(latitude,longitude,map_name){ 92 "use strict"; 93 94 var mapCenter = L.latLng(latitude, longitude ); 95var map = L.map( map_name,{ 96 center: mapCenter, 97 zoom:7, 98 }); 99 100 var tileLayer = wpresidence_open_stret_tile_details(); 101 map.addLayer( tileLayer ); 102 103 104 var markerCenter = L.latLng( latitude, longitude ); 105 var markerImage = { 106 iconUrl: images['single_pin'], 107 iconSize: [44, 50], 108 iconAnchor: [20, 50], 109 popupAnchor: [1, -50] 110 }; 111 var markerOptions = { 112 riseOnHover: true 113 }; 114 115 116 markerOptions.icon = L.icon( markerImage ); 117 var propertyMarker = L.marker( markerCenter, markerOptions ); 118 119 propertyMarker.addTo( map ); 120 121 122} 123 124 125 126 127 128 129function wpesate_custompin_agency(){ 130 "use strict"; 131 var image = { 132 url: images['single_pin'], 133 size: new google.maps.Size(59, 59), 134 origin: new google.maps.Point(0,0), 135 anchor: new google.maps.Point(16,59 ) 136 }; 137 138 return image; 139} 140 141 142 143 144 145function wpestate_map_shortcode_function() { 146 "use strict"; 147 var maps = {}; // Object to hold map instances 148 var markersArrays = {}; // Object to hold markers for each map 149 150 jQuery('.googleMap_shortcode_class').each(function() { 151 var element = jQuery(this); 152 var elementParent = jQuery(this).parent(); 153 var element = jQuery(this); 154 var elementId = element.attr('id'); 155 var selected_id = parseInt(element.attr('data-post_id'), 10); 156 var curent_gview_lat = element.attr('data-cur_lat'); 157 var curent_gview_long = element.attr('data-cur_long'); 158 var zoom = ''; 159 markersArrays[elementId]= []; 160 if (typeof googlecode_property_vars === 'undefined') { 161 zoom=5; 162 heading=0; 163 164 if(jQuery('#modal_property_maps').length>0){ 165 zoom = element.attr('data-prop-zoom'); 166 heading = 0; 167 }else{ 168 zoom = 5; 169 heading = 0; 170 } 171 }else{ 172 zoom = googlecode_property_vars.page_custom_zoom; 173 heading = parseInt(googlecode_property_vars.camera_angle); 174 } 175 176 var i = 1; 177 var id = selected_id; 178 var lat = curent_gview_lat; 179 var lng = curent_gview_long; 180 var title = decodeURIComponent(element.attr('data-title')); 181 var pin = element.attr('data-pin'); 182 var counter = 1; 183 var image = decodeURIComponent(element.attr('data-thumb')); 184 var price = decodeURIComponent(element.attr('data-price')); 185 var single_first_type = decodeURIComponent(element.attr('data-single-first-type')); 186 var single_first_action = decodeURIComponent(element.attr('data-single-first-action')); 187 var link = decodeURIComponent(element.attr('data-prop_url')); 188 var city = ''; 189 var area = ''; 190 var rooms = decodeURIComponent(element.attr('data-rooms')); 191 var baths = decodeURIComponent(element.attr('data-bathrooms')); 192 var size = decodeURIComponent(element.attr('data-size')); 193 var single_first_type_name = decodeURIComponent(element.attr('data-single-first-type')); 194 var single_first_action_name = decodeURIComponent(element.attr('data-single-first-action')); 195 var agent_id = ''; 196 var county_state = ''; 197 var price_pin = decodeURIComponent(element.attr('data-pin_price')); 198 var cleanprice = decodeURIComponent(element.attr('data-clean_price')); 199 200 201 if (wp_estate_kind_of_map == 2) { 202 var mapCenter = L.latLng(curent_gview_lat, curent_gview_long); 203 maps[elementId] = L.map(element.attr('id'), { 204 center: mapCenter, 205 zoom: zoom 206 }).on('load', function(e) { 207 jQuery('#gmap-loading').remove(); 208 }); 209 210 wpresidence_leaflet_initialize_map_common(maps[elementId]); 211 wpestate_createMarker_sh_leaflet(price_pin, infoBox_sh, markersArrays[elementId] , maps[elementId], county_state, size, i,id, lat, lng, pin, title, counter, image, price, single_first_type, single_first_action, link, city, area, rooms, baths, cleanprice, single_first_type_name, single_first_action_name); 212 213 } else { 214 if (element.length > 0) { 215 216 var mapOptions_intern = { 217 flat: false, 218 noClear: false, 219 zoom: parseInt(zoom, 10), 220 scrollwheel: false, 221 draggable: true, 222 center: new google.maps.LatLng(curent_gview_lat, curent_gview_long), 223 streetViewControl: false, 224 disableDefaultUI: true, 225 mapTypeId: mapfunctions_vars.type.toLowerCase(), 226 gestureHandling: 'cooperative' 227 }; 228 229 maps[elementId] = new google.maps.Map(document.getElementById(elementId), mapOptions_intern); 230 google.maps.visualRefresh = true; 231 google.maps.event.trigger( maps[elementId], 'resize'); 232 233 var infobox_width = 700; 234 var vertical_pan = -215; 235 var width_browser = jQuery(window).width(); 236 237 if (width_browser < 900) { 238 infobox_width = 500; 239 } 240 if (width_browser < 600) { 241 infobox_width = 400; 242 } 243 if (width_browser < 400) { 244 infobox_width = 200; 245 } 246 var boxText = document.createElement("div"); 247 248 var myOptions = { 249 content: boxText, 250 disableAutoPan: true, 251 maxWidth: infobox_width, 252 boxClass: "mybox", 253 zIndex: null, 254 closeBoxMargin: "-13px 0px 0px 0px", 255 closeBoxURL: "", 256 infoBoxClearance: new google.maps.Size(1, 1), 257 isHidden: false, 258 pane: "floatPane", 259 enableEventPropagation: true 260 }; 261 var infoBox_sh = new InfoBox(myOptions); 262 263 if (mapfunctions_vars.map_style !== '') { 264 var styles = JSON.parse(mapfunctions_vars.map_style); 265 maps[elementId].setOptions({ styles: styles }); 266 } 267 268 269 wpestate_createMarker_sh(price_pin, infoBox_sh, markersArrays[elementId] , maps[elementId], 270 county_state, size,i, id, lat, lng, 271 pin, title, counter, image, price, 272 single_first_type, single_first_action, link, city, area, 273 rooms, baths, cleanprice, 274 single_first_type_name, single_first_action_name); 275 276 var viewPlace = new google.maps.LatLng(curent_gview_lat, curent_gview_long); 277 if (typeof (panorama_sh) === 'undefined') { 278 var panorama_sh; 279 } 280 var panorama_sh = maps[elementId].getStreetView(); 281 282 panorama_sh.setPosition(viewPlace); 283 panorama_sh.setPov({ 284 heading: heading, 285 pitch: 0 286 }); 287 288 elementParent.find('.slider_enable_street_sh').click(function() { 289 var cur_lat = element.attr('data-cur_lat'); 290 var cur_long = element.attr('data-cur_long'); 291 var myLatLng = new google.maps.LatLng(cur_lat, cur_long); 292 293 panorama_sh.setPosition(myLatLng); 294 panorama_sh.setVisible(true);
295 elementParent.find('.gmapzoomminus_sh, .gmapzoomplus_sh, .slider_enable_street_sh').hide(); 296 }); 297 298 google.maps.event.addListener(panorama_sh, "closeclick", function() { 299 300 elementParent.find('.gmapzoomminus_sh, .gmapzoomplus_sh, .slider_enable_street_sh').show(); 301 }); 302 303 304 if (mapfunctions_vars.hidden_map) { 305 google.maps.event.trigger(markersArrays[elementId][0], 'click'); 306 setTimeout(function() { 307 google.maps.event.trigger( maps[elementId], "resize"); 308 maps[elementId].setCenter(markersArrays[elementId][0].position); 309 }, 300); 310 } 311 wpestate_initialize_poi( maps[elementId], 2,elementId); 312 } 313 } 314 315 316 317 elementParent.find('.gmapzoomplus_sh').click(function() { 318 var current = parseInt( maps[elementId].getZoom(), 10); 319 current++; 320 if (current > 20) { 321 current = 20; 322 } 323 maps[elementId].setZoom(current); 324 }); 325 326 elementParent.find('.gmapzoomminus_sh').click(function() { 327 var current = parseInt( maps[elementId].getZoom(), 10); 328 current--; 329 if (current < 0) { 330 current = 0; 331 } 332 maps[elementId].setZoom(current); 333 }); 334 335 336 if (wp_estate_kind_of_map == 2) { 337 setTimeout(function() { maps[elementId].invalidateSize(); }, 1000); 338 } else { 339 setTimeout(function() { google.maps.event.trigger( maps[elementId], "resize"); }, 1000); 340 } 341 342 jQuery('.shtabmap, .shacctab,#overview_map').click(function(event) { 343 if (wp_estate_kind_of_map == 2) { 344 setTimeout(function() { maps[elementId].invalidateSize(); }, 100); 345 } else { 346 setTimeout(function() { google.maps.event.trigger( maps[elementId], "resize"); }, 100); 347 } 348 }); 349 }); 350} 351 352function wpestate_term_geo_marker(map_obj, lat, lng){ 353 "use strict"; 354 if( wp_estate_kind_of_map == 2 ){ 355 var markerCenter = L.latLng(lat, lng); 356 var markerImage = { 357 iconUrl: mapfunctions_vars.path + '/poi/location.png', 358 iconSize: [28, 38], 359 iconAnchor: [10, 19], 360 popupAnchor: [1, -18] 361 }; 362 var markerOptions = {riseOnHover: true}; 363 markerOptions.icon = L.icon(markerImage); 364 L.marker(markerCenter, markerOptions).addTo(map_obj); 365 }else{ 366 var place_position = new google.maps.LatLng(lat, lng); 367 new google.maps.Marker({ 368 map: map_obj, 369 position: place_position, 370 icon: mapfunctions_vars.path + '/poi/location.png' 371 }); 372 } 373} 374 375 376function wpestate_term_map_shortcode_function(){ 377 "use strict"; 378 jQuery('.googleMap_term_shortcode_class').each(function(){ 379 var element = jQuery(this); 380 var elementParent = element.parent(); 381 var elementId = element.attr('id'); 382 var cur_lat = element.attr('data-cur_lat'); 383 var cur_long = element.attr('data-cur_long'); 384 var zoom = parseInt(element.attr('data-prop-zoom'),10) || 15; 385 var heading = parseInt(element.attr('data-google-angle'),10) || 0; 386 var title = decodeURIComponent(element.attr('data-title')); 387 var pin = element.attr('data-pin'); 388 var geojsonUrl = element.attr('data-geojson'); 389 var map_local; 390 391 if (wp_estate_kind_of_map == 2) { 392 var mapCenter = L.latLng(cur_lat, cur_long); 393 map_local = L.map(elementId, {center: mapCenter, zoom: zoom}); 394 wpresidence_leaflet_initialize_map_common(map_local); 395 wpestate_term_geo_marker(map_local, cur_lat, cur_long); 396 if ( geojsonUrl ) { 397 jQuery.getJSON(geojsonUrl, function(data){ 398 L.geoJSON(data).addTo(map_local); 399 }); 400 } 401 } else { 402 var mapOptions = { 403 flat:false, 404 noClear:false, 405 zoom: zoom, 406 scrollwheel:false, 407 draggable:true, 408 center:new google.maps.LatLng(cur_lat, cur_long), 409 streetViewControl:false, 410 disableDefaultUI:true, 411 mapTypeId: mapfunctions_vars.type.toLowerCase(), 412 gestureHandling:'cooperative' 413 }; 414 map_local = new google.maps.Map(document.getElementById(elementId), mapOptions); 415 google.maps.visualRefresh = true; 416 google.maps.event.trigger(map_local,'resize'); 417 418 wpestate_term_geo_marker(map_local, cur_lat, cur_long); 419 420 var viewPlace = new google.maps.LatLng(cur_lat, cur_long); 421 var panorama_term = map_local.getStreetView(); 422 panorama_term.setPosition(viewPlace); 423 panorama_term.setPov({heading: heading, pitch:0}); 424 if ( geojsonUrl ) { 425 map_local.data.loadGeoJson(geojsonUrl); 426 } 427 428 elementParent.find('.slider_enable_street_sh').click(function(){ 429 var cur_lat = element.attr('data-cur_lat'); 430 var cur_long = element.attr('data-cur_long'); 431 var myLatLng = new google.maps.LatLng(cur_lat, cur_long); 432 433 panorama_term.setPosition(myLatLng); 434 panorama_term.setVisible(true);
435 elementParent.find('.gmapzoomminus_sh, .gmapzoomplus_sh, .slider_enable_street_sh').hide(); 436 }); 437 438 google.maps.event.addListener(panorama_term, 'closeclick', function() { 439 elementParent.find('.gmapzoomminus_sh, .gmapzoomplus_sh, .slider_enable_street_sh').show(); 440 }); 441 } 442 443 // use taxonomy markers if provided via googlecode_regular_vars2 444 if( typeof window.googlecode_regular_vars2 !== 'undefined' && 445 window.googlecode_regular_vars2.markers2.length > 2 ){ 446 var pinsData = jQuery.parseJSON( window.googlecode_regular_vars2.markers2 ); 447 448 if( pinsData.length > 0 ){ 449 var callback = function(){ 450 var prevMap = map; 451 var prevMarkers = gmarkers; 452 var prevCluster = markers_cluster; 453 var prevMC = mcluster; 454 var prevBounds = bounds; 455 var prevOms = oms; 456 457 map = map_local; 458 gmarkers = []; 459 mcluster = undefined; 460 bounds = undefined; 461 oms = undefined; 462 463 wpresidence_map_general_set_markers(map_local, pinsData, 1); 464 wpresidence_map_general_cluster(); 465 // wpresidence_map_general_fit_to_bounds(1); 466 wpresidence_map_general_spiderfy(); 467 468 map = prevMap; 469 gmarkers = prevMarkers; 470 markers_cluster = prevCluster; 471 mcluster = prevMC; 472 bounds = prevBounds; 473 oms = prevOms; 474 }; 475 476 if ( wp_estate_kind_of_map == 2 ) { 477 map_local.whenReady(callback); 478 } else { 479 wpestate_initialize_poi(map_local,2,elementId); 480 google.maps.event.addListenerOnce(map_local, 'idle', callback); 481 } 482 } 483 } 484 485 elementParent.find('.gmapzoomplus_sh').click(function(){ 486 var current = parseInt(map_local.getZoom(),10); 487 current++; 488 if(current>20){ current=20; } 489 map_local.setZoom(current); 490 }); 491 492 elementParent.find('.gmapzoomminus_sh').click(function(){ 493 var current = parseInt(map_local.getZoom(),10); 494 current--; 495 if(current<0){ current=0; } 496 map_local.setZoom(current); 497 }); 498 499 if (wp_estate_kind_of_map == 2) { 500 setTimeout(function(){ map_local.invalidateSize(); }, 1000); 501 } else { 502 503 setTimeout(function(){ google.maps.event.trigger(map_local,'resize'); },1000); 504 505 } 506 }); 507} 508 509 510 511 512 513/* 514* 515* Create marker openstreet 516* 517*/ 518 519 520function wpestate_createMarker_sh_leaflet (pin_price,infoBox_sh,gmarkers_sh,map2,county_state, size, i,id,lat,lng,pin,title,counter,image,price,single_first_type,single_first_action,link,city,area,rooms,baths,cleanprice,single_first_type_name, single_first_action_name ){ 521 "use strict"; 522 var infoboxWrapper = document.createElement( "div" ); 523 infoboxWrapper.className = 'leafinfobox-wrapper'; 524 var infobox = ""; 525 526 var poss=0; 527 var infobox_class=" price_infobox "; 528 529 530 531 532 533 534 if( mapfunctions_vars.useprice === 'yes' ){ 535 infobox_class =' openstreet_map_price_infobox '; 536 } 537 538 539 var info_image=''; 540 if (image === '') { 541 info_image = info_image='<img src="' + mapfunctions_vars.path + '/idxdefault.jpg" />'; 542 } else { 543 info_image = image; 544 } 545 546 var category = decodeURIComponent(single_first_type.replace(/-/g, ' ')); 547 var action = decodeURIComponent(single_first_action.replace(/-/g, ' ')); 548 var category_name = decodeURIComponent(single_first_type_name.replace(/-/g, ' ')); 549 var action_name = decodeURIComponent(single_first_action_name.replace(/-/g, ' ')); 550 551 var in_type = mapfunctions_vars.in_text; 552 if (category === '' || action === '') { 553 in_type = " "; 554 } 555 in_type = " / "; 556 var infoguest,inforooms; 557 558 var infobaths; 559 if(baths!='' && baths!=0 ){ 560 infobaths ='<span id="infobath">'+baths+' '+mapfunctions_vars.ba+'</span>'; 561 }else{ 562 infobaths =''; 563 } 564 565 566 var inforooms; 567 if(rooms!='' && rooms!=0 ){ 568 inforooms='<span id="inforoom">'+rooms+' '+mapfunctions_vars.bd+'</span>'; 569 }else{ 570 inforooms=''; 571 } 572 573 var infosize; 574 if(size!=''){ 575 infosize ='<span id="infosize">'+size+'</span>'; 576 }else{ 577 infosize=''; 578 } 579
580 var title= title.substr(0, 30); 581 if(title.length > 30){ 582 title=title+"..."; 583 } 584 585 586 587 infobox += wpestate_generate_infobox_leaflet(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms); 588 589 var markerOptions = { 590 riseOnHover: true 591 }; 592 593 var markerCenter = L.latLng( lat, lng ); 594 var propertyMarker = ''; 595 596 if( !mapfunctions_vars.hidden_map ){ 597 propertyMarker = L.circle(markerCenter, { 598 color: '#0073e1', 599 fillColor: '#0073e1', 600 fillOpacity: 0.4, 601 strokeWeight: 0.2, 602 radius: 120 603 604 605 }); 606 607 }else{ 608 609 if( mapfunctions_vars.useprice === 'yes' ){ 610 var price_pin_class= 'wpestate_marker openstreet_price_marker '+wpestate_makeSafeForCSS(single_first_type_name.trim() )+' '+wpestate_makeSafeForCSS(single_first_action_name.trim()); 611 612 var pin_price_marker = '<div class="'+price_pin_class+'">'; 613 if (typeof(price) !== 'undefined') { 614 if( mapfunctions_vars.use_price_pins_full_price==='no'){ 615 pin_price_marker +='<div class="interior_pin_price">'+pin_price+'</div>'; 616 }else{ 617 pin_price_marker +='<div class="interior_pin_price">'+price+'</div>'; 618 } 619 } 620 pin_price_marker += '</div>'; 621 622 623 624 var myIcon = L.divIcon({ 625 className:'someclass', 626 iconSize: new L.Point(0, 0), 627 html: pin_price_marker 628 }); 629 propertyMarker = L.marker( markerCenter, {icon: myIcon} ); 630 631 }else{ 632 var markerImage = { 633 iconUrl: wprentals_custompin_leaflet(pin), 634 iconSize: [44, 50], 635 iconAnchor: [20, 50], 636 popupAnchor: [1, -50] 637 }; 638 markerOptions.icon = L.icon( markerImage ); 639 propertyMarker = L.marker( markerCenter, markerOptions ); 640 } 641 } 642 643 propertyMarker.idul = id; 644 propertyMarker.pin = pin; 645 646 647 propertyMarker.addTo( map2 ); 648 649 650 gmarkers_sh.push(propertyMarker); 651 652 if (typeof (bounds_list) !== "undefined") { 653 bounds_list.extend(propertyMarker.getLatLng()); 654 }else{ 655 bounds_list = L.latLngBounds( propertyMarker.getLatLng(),propertyMarker.getLatLng() ); 656 } 657 658 infoboxWrapper.innerHTML = infobox; 659 propertyMarker.bindPopup( infobox ); 660 661 662 if( mapfunctions_vars.hidden_map ){ 663 propertyMarker.fire('click').openPopup(); 664 } 665 666} 667 668 669 670 671 672 673function wpestate_createMarker_sh ( 674 pin_price,infoBox_sh,gmarkers_sh,map2, 675 county_state, size, i,id,lat,lng, 676 pin,title,counter,image,price, 677 single_first_type,single_first_action,link,city,area, 678 rooms,baths,cleanprice, 679 single_first_type_name, single_first_action_name ){ 680 "use strict"; 681 682 683 684 685 var new_title = ''; 686 var myLatLng = new google.maps.LatLng(lat,lng); 687 var poss=0; 688 var infobox_class=" price_infobox "; 689 690 if(mapfunctions_vars.useprice === 'yes' && mapfunctions_vars.hidden_map){ 691 692 693 myLatLng = new google.maps.LatLng(lat,lng); 694 var Titlex = jQuery('<textarea />').html(title).text(); 695 696 var infoWindowIndex = 999; 697 poss=11; 698 699 var price2=price; 700 var my_custom_curr_pos = parseFloat( wpestate_getCookie_map('my_custom_curr_pos')); 701 if (!isNaN(my_custom_curr_pos) && my_custom_curr_pos !== -1) { 702 703 var converted_price= wpestate_get_price_currency(cleanprice,cleanprice); 704 var testRE = price.match('</span>(.*)<span class='); 705 if (testRE !== null ){ 706 price2=price.replace(testRE[1],converted_price); 707 } 708 } 709 710 711 marker= new WpstateMarker( 712 poss, 713 myLatLng, 714 map2, 715 Titlex, 716 counter, 717 image, 718 id, 719 720 price2, 721 pin_price, 722 single_first_type, 723 single_first_action, 724 link, 725 i, 726 rooms, 727 baths, 728 cleanprice, 729 size, 730 single_first_type_name, 731 single_first_action_name, 732 pin, 733 infoWindowIndex 734 ); 735 736 737 }else{ 738 infobox_class=" classic_info "; 739 var marker = new google.maps.Marker({ 740 position: myLatLng, 741 map: map2, 742 icon: wpestate_custompin(pin), 743 shape: shape, 744 title: title, 745 zIndex: counter, 746 image:image, 747 idul:id, 748 price:price, 749 category:single_first_type, 750 action:single_first_action, 751 link:link, 752 city:city, 753 area:area, 754 infoWindowIndex : i, 755 rooms:rooms, 756 baths:baths, 757 cleanprice:cleanprice, 758 size:size, 759 county_state:county_state, 760 category_name:single_first_type_name, 761 action_name:single_first_action_name 762 }); 763 } 764 765 gmarkers_sh.push(marker); 766 767 google.maps.event.addListener(marker, 'click', function() { 768 769 if(this.image===''){ 770 info_image='<img src="' + mapfunctions_vars.path + '/idxdefault.jpg" />'; 771 }else{ 772 info_image=this.image; 773 } 774 775 var category = decodeURIComponent ( this.category.replace(/-/g,' ') ); 776 var action = decodeURIComponent ( this.action.replace(/-/g,' ') ); 777 // var category_name = decodeURIComponent ( this.category_name.replace(/-/g,' ') ); 778 // var action_name = decodeURIComponent ( this.action_name.replace(/-/g,' ') ); 779 var in_type = mapfunctions_vars.in_text; 780 if(category==='' || action===''){ 781 in_type=" "; 782 } 783 784 var infobaths; 785 if(this.baths!='' && this.baths!=0){ 786 infobaths ='<span id="infobath">'+this.baths+' '+mapfunctions_vars.ba+'</span>'; 787 }else{ 788 infobaths =''; 789 } 790 791 var inforooms; 792 if(this.rooms!='' && this.rooms!=0){ 793 inforooms='<span id="inforoom">'+this.rooms+' '+mapfunctions_vars.bd+'</span>'; 794 }else{ 795 inforooms=''; 796 } 797 798 var infosize; 799 if(this.size!=''){ 800 infosize ='<span id="infosize">'+this.size; 801 infosize =infosize+'</span>'; 802 }else{ 803 infosize=''; 804 } 805 806
807 var title= this.title.substr(0, 30); 808 if(this.title.length > 30){ 809 title=title+"..."; 810 } 811 812 infoBox_sh.setContent( wpestate_generate_infobox_sh(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms)); 813 var currentMap = this.getMap ? this.getMap() : map2; 814 infoBox_sh.open(currentMap, this); 815 if ( currentMap && currentMap.setCenter ) { 816 currentMap.setCenter(this.position); 817 } 818 819 // Add a click listener to the infocloser 820 google.maps.event.addListenerOnce(infoBox_sh, 'domready', function () { 821 document.getElementById('infocloser').addEventListener('click', function () { 822 infoBox_sh.close(); 823 }); 824 }); 825 826 827 828 829 if (control_vars.show_adv_search_map_close === 'no') { 830 $('.search_wrapper').addClass('adv1_close'); 831 wpestate_adv_search_click(); 832 } 833 834 wpestate_close_adv_search(); 835 });/////////////////////////////////// end event listener 836 837 838 839} 840 841 842 843///////////////////////////////////////////////////////////////////////////////////////////////// 844// change map 845///////////////////////////////////////////////////////////////////////////////////////////////// 846 847function wpestate_change_map_type(map_type){ 848 "use strict"; 849 if(map_type==='map-view-roadmap'){ 850 map.setMapTypeId(google.maps.MapTypeId.ROADMAP); 851 }else if(map_type==='map-view-satellite'){ 852 map.setMapTypeId(google.maps.MapTypeId.SATELLITE); 853 }else if(map_type==='map-view-hybrid'){ 854 map.setMapTypeId(google.maps.MapTypeId.HYBRID); 855 }else if(map_type==='map-view-terrain'){ 856 map.setMapTypeId(google.maps.MapTypeId.TERRAIN); 857 } 858 859} 860 861///////////////////////////////////////////////////////////////////////////////////////////////// 862// set markers... loading pins over map 863///////////////////////////////////////////////////////////////////////////////////////////////// 864 865function wpestate_setMarkers(map, locations, with_bound) { 866 "use strict"; 867 var map_open; 868 var myLatLng; 869 var selected_id = parseInt( jQuery('#gmap_wrapper').attr('data-post_id') ); 870 if( isNaN(selected_id) ){ 871 selected_id = parseInt( jQuery('#googleMapSlider').attr('data-post_id'),10 ); 872 } 873 874 var open_height = parseInt(mapfunctions_vars.open_height,10); 875 var closed_height = parseInt(mapfunctions_vars.closed_height,10); 876 877 width_browser = jQuery(window).width(); 878 879 infobox_width=700; 880 vertical_pan=-215; 881 if (width_browser<900){ 882 infobox_width=500; 883 } 884 if (width_browser<600){ 885 infobox_width=400; 886 } 887 if (width_browser<400){ 888 infobox_width=200; 889 } 890 891 892 893 894 bounds = new google.maps.LatLngBounds(); 895 896 for (var i = 0; i < locations.length; i++) { 897 var beach = locations[i]; 898 var id = beach[10]; 899 var lat = beach[1]; 900 var lng = beach[2]; 901 var title = decodeURIComponent ( beach[0] ); 902 var pin = beach[8]; 903 var counter = beach[3]; 904 var image = decodeURIComponent ( beach[4] ); 905 var price = decodeURIComponent ( beach[5] ); 906 var single_first_type = decodeURIComponent ( beach[6] ); 907 var single_first_action = decodeURIComponent ( beach[7] ); 908 var link = decodeURIComponent ( beach[9] ); 909 var cleanprice = beach[11]; 910 var rooms = beach[12]; 911 var baths = beach[13]; 912 var size = beach[14]; 913 var single_first_type_name = decodeURIComponent ( beach[15] ); 914 var single_first_action_name = decodeURIComponent ( beach[16] ); 915 var pin_price = decodeURIComponent ( beach[
91517] ); 916 917 918 wpestate_createMarker ( pin_price,size, i,id,lat,lng,pin,title,counter,image,price,single_first_type,single_first_action,link,rooms,baths,cleanprice,single_first_type_name, single_first_action_name); 919 920 // found the property 921 if(selected_id===id){ 922 found_id=i; 923 } 924 925 926 }//end for 927 928 929 wpestate_map_cluster(); 930 if( !jQuery('body').hasClass('single-estate_property') ){ 931 oms = new OverlappingMarkerSpiderfier(map, {markersWontMove: true, markersWontHide: true,keepSpiderfied :true,legWeight:2}); 932 wpestate_setOms(gmarkers); 933 } 934 935 if(with_bound===1){ 936 if (!bounds.isEmpty()) { 937 938 wpestate_fit_bounds(bounds); 939 }else{ 940 wpestate_fit_bounds_nolsit(); 941 } 942 } 943 944 // pan to the latest pin for taxonmy and adv search 945 if(mapfunctions_vars.generated_pins!=='0'){ 946 myLatLng = new google.maps.LatLng(lat, lng); 947 } 948 949 950 951 952}// end wpestate_setMarkers 953 954 955///////////////////////////////////////////////////////////////////////////////////////////////// 956// create marker 957///////////////////////////////////////////////////////////////////////////////////////////////// 958 959 960function wpestate_createMarker ( pin_price,size, i,id,lat,lng,pin,title,counter,image,price,single_first_type,single_first_action,link,rooms,baths,cleanprice,single_first_type_name, single_first_action_name){ 961 962 "use strict"; 963 var myLatLng = new google.maps.LatLng(lat,lng); 964 var Titlex = jQuery('<textarea />').html(title).text(); 965 var poss = 0; 966 var infobox_class = " price_infobox "; 967 var boxText = document.createElement("div"); 968 969 var myOptions = { 970 content: boxText, 971 disableAutoPan: true, 972 maxWidth: infobox_width, 973 boxClass:"mybox", 974 zIndex: null, 975 closeBoxMargin: "-13px 0px 0px 0px", 976 closeBoxURL: "", 977 infoBoxClearance: new google.maps.Size(1, 1), 978 isHidden: false, 979 pane: "floatPane", 980 enableEventPropagation: true 981 }; 982 infoBox = new InfoBox(myOptions); 983 984 985 986 if(mapfunctions_vars.useprice === 'yes'){ 987 988 989 990 var price2=price; 991 var my_custom_curr_pos = parseFloat( wpestate_getCookie_map('my_custom_curr_pos')); 992 if (!isNaN(my_custom_curr_pos) && my_custom_curr_pos !== -1) { 993 var converted_price= wpestate_get_price_currency(cleanprice,cleanprice); 994 var testRE = price.match('</span>(.*)<span class='); 995 if (testRE !== null ){ 996 price2=price.replace(testRE[1],converted_price); 997 } 998 } 999 1000 1001 var myLatlng = new google.maps.LatLng(lat,lng); 1002 marker= new WpstateMarker( 1003 poss, 1004 myLatlng, 1005 map, 1006 Titlex, 1007 counter, 1008 image, 1009 id, 1010 1011 price2, 1012 pin_price, 1013 single_first_type, 1014 single_first_action, 1015 link, 1016 i, 1017 rooms, 1018 baths, 1019 cleanprice, 1020 size, 1021 single_first_type_name, 1022 single_first_action_name, 1023 pin, 1024 i 1025 ); 1026 }else{ 1027 infobox_class=" classic_info "; 1028 var marker = new google.maps.Marker({ 1029 position: myLatLng, 1030 map: map, 1031 icon: wpestate_custompin(pin), 1032 shape: shape, 1033 title: Titlex, 1034 zIndex: counter, 1035 image: image, 1036 idul: id, 1037 price: price, 1038 category: single_first_type, 1039 action: single_first_action, 1040 link: link, 1041 infoWindowIndex : i, 1042 rooms: rooms, 1043 baths: baths, 1044 cleanprice: cleanprice, 1045 size: size, 1046 category_name: single_first_type_name, 1047 action_name: single_first_action_name 1048 }); 1049 1050 } 1051 1052 1053 gmarkers.push(marker); 1054 bounds.extend(marker.getPosition()); 1055 google.maps.event.addListener(marker, 'click', function(event) { 1056 1057 // wpestate_new_open_close_map(1); 1058 1059 if( typeof(is_map_shortcode) ==="undefined" ){ 1060 wpestate_map_callback( wpestate_new_open_close_map ); 1061 google.maps.event.trigger(map, 'resize'); 1062 } 1063 1064 if(this.image===''){ 1065 info_image='<img src="' + mapfunctions_vars.path + '/idxdefault.jpg" />'; 1066 }else{ 1067 info_image=this.image; 1068 } 1069 1070 var category = decodeURIComponent ( this.category.replace(/-/g,' ') ); 1071 var action = decodeURIComponent ( this.action.replace(/-/g,' ') ); 1072 var category_name = decodeURIComponent ( this.category_name.replace(/-/g,' ') ); 1073 var action_name = decodeURIComponent ( this.action_name.replace(/-/g,' ') ); 1074 var in_type = mapfunctions_vars.in_text; 1075 if(category==='' || action===''){ 1076 in_type=" "; 1077 } 1078 1079 var infobaths; 1080 if(this.baths!='' && this.baths!=0){ 1081 infobaths ='<span id="infobath">'+this.baths+' '+mapfunctions_vars.ba+'</span>'; 1082 }else{ 1083 infobaths =''; 1084 } 1085 1086 var inforooms; 1087 if(this.rooms!='' && this.rooms!=0){ 1088 inforooms='<span id="inforoom">'+this.rooms+' '+mapfunctions_vars.bd+'</span>'; 1089 }else{ 1090 inforooms=''; 1091 } 1092 1093 var infosize; 1094 if(this.size!=''){ 1095 infosize ='<span id="infosize">'+this.size; 1096 1097 infosize =infosize+'</span>'; 1098 }else{ 1099 infosize=''; 1100 } 1101 1102
1103 var title= this.title.substr(0, 30); 1104 if(this.title.length > 30){ 1105 title=title+"..."; 1106 } 1107 1108 1109 infoBox.setContent( wpestate_generate_infobox(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms)); 1110 var currentMap = this.getMap ? this.getMap() : map; 1111 infoBox.open(currentMap, this); 1112 if ( currentMap && currentMap.setCenter ) { 1113 currentMap.setCenter(this.position); 1114 } 1115 1116 if (control_vars.show_adv_search_map_close === 'no') { 1117 $('.search_wrapper').addClass('adv1_close'); 1118 wpestate_adv_search_click(); 1119 } 1120 1121 wpestate_close_adv_search(); 1122 });/////////////////////////////////// end event listener 1123 1124 1125 1126} 1127 1128function wpestate_pan_to_last_pin(myLatLng){ 1129 "use strict"; 1130 map.setCenter(myLatLng); 1131} 1132 1133 1134function wpestate_generate_infobox(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms){ 1135 1136 var infobox= '<div class="info_details '+infobox_class+'"><span id="infocloser" onClick=\'javascript:infoBox.close();\' ></span>'; 1137 infobox = infobox+ '<div class="infobox_wrapper_image"> <a href="'+link+'">'+info_image+'</a></div>'; 1138 infobox = infobox+ '<div class="infobox_title"><a href="'+link+'" id="infobox_title">'+title+'</a></div>'; 1139 infobox = infobox+ '<div class="prop_pricex">'+wpestate_get_price_currency(price,cleanprice)+'</div>'; 1140 infobox = infobox+ '<div class="infobox_details">'+inforooms+' '+infobaths+' '+infosize+'</div></div>'; 1141 1142 return infobox; 1143 1144} 1145 1146function wpestate_generate_infobox_sh(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms){ 1147 1148 var infobox= '<div class="info_details '+infobox_class+'"><span id="infocloser" onClick=\'javascript:infoBox_sh.close();\' ></span>'; 1149 infobox = infobox+ '<div class="infobox_wrapper_image"> <a href="'+link+'">'+info_image+'</a></div>'; 1150 infobox = infobox+ '<div class="infobox_title"><a href="'+link+'" id="infobox_title">'+title+'</a></div>'; 1151 infobox = infobox+ '<div class="prop_pricex">'+wpestate_get_price_currency(price,cleanprice)+'</div>'; 1152 infobox = infobox+ '<div class="infobox_details">'+inforooms+' '+infobaths+' '+infosize+'</div></div>'; 1153 1154 return infobox; 1155 1156} 1157 1158 1159function wpestate_generate_infobox_leaflet(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms){ 1160 var title= title.substr(0, 32); 1161 if(title.length > 32){ 1162 title=title+"..."; 1163 } 1164 var infobox= '<div class="info_details '+infobox_class+'"><span id="infocloser" onClick=\'javascript:jQuery(".leaflet-popup-close-button")[0].click();\' ></span>'; 1165 infobox = infobox+ '<div class="infobox_wrapper_image"> <a href="'+link+'">'+info_image+'</a></div>'; 1166 infobox = infobox+ '<div class="infobox_title"><a href="'+link+'" id="infobox_title">'+title+'</a></div>'; 1167 infobox = infobox+ '<div class="prop_pricex">'+wpestate_get_price_currency(price,cleanprice)+'</div>'; 1168 infobox = infobox+ '<div class="infobox_details">'+inforooms+' '+infobaths+' '+infosize+'</div></div>'; 1169 1170 return infobox; 1171 1172} 1173 1174 1175///////////////////////////////////////////////////////////////////////////////////////////////// 1176// map set search 1177///////////////////////////////////////////////////////////////////////////////////////////////// 1178function wpestate_setOms(gmarkers){ 1179 "use strict"; 1180 for (var i = 0; i < gmarkers.length; i++) { 1181 if(typeof oms !== 'undefined'){ 1182 oms.addMarker(gmarkers[i]); 1183 }else{ 1184 1185 } 1186 } 1187 1188} 1189 1190///////////////////////////////////////////////////////////////////////////////////////////////// 1191// map set search 1192///////////////////////////////////////////////////////////////////////////////////////////////// 1193 1194function wpestate_set_google_search(map){ 1195 "use strict"; 1196 if( parseInt(mapbase_vars.wp_estate_kind_of_map) == 2 || jQuery('#google-default-search').length===0 ){ 1197 return; 1198 } 1199 1200 1201 var input,searchBox,places,place; 1202 1203 input = (document.getElementById('google-default-search')); 1204 searchBox = new google.maps.places.SearchBox(input); 1205 1206 1207 google.maps.event.addListener(searchBox, 'places_changed', function() { 1208 places = searchBox.getPlaces(); 1209 1210 if (places.length == 0) { 1211 return; 1212 } 1213 1214 var bounds = new google.maps.LatLngBounds(); 1215 for (var i = 0; place = places[i]; i++) { 1216 var image = { 1217 url: place.icon, 1218 size: new google.maps.Size(71, 71), 1219 origin: new google.maps.Point(0, 0), 1220 anchor: new google.maps.Point(17, 34), 1221 scaledSize: new google.maps.Size(25, 25) 1222 }; 1223 1224 // Create a marker for each place. 1225 var marker = new google.maps.Marker({ 1226 map: map, 1227 icon: image, 1228 title: place.name, 1229 position: place.geometry.location 1230 }); 1231 1232 gmarkers.push(marker); 1233 bounds.extend(place.geometry.location); 1234 1235 } 1236 1237 map.fitBounds(bounds); 1238 if (!bounds.isEmpty()) { 1239 wpestate_fit_bounds(bounds); 1240 }else{ 1241 wpestate_fit_bounds_nolsit(); 1242 } 1243 map.setZoom(15); 1244 }); 1245 1246 1247 google.maps.event.addListener(map, 'bounds_changed', function() { 1248 var bounds = map.getBounds(); 1249 searchBox.setBounds(bounds); 1250 }); 1251 1252} 1253 1254function wpestate_fit_bounds_nolsit(){ 1255 "use strict"; 1256 map.setZoom(3); 1257} 1258 1259 1260 1261function wpestate_fit_bounds(bounds){ 1262 "use strict"; 1263 1264 if(placeCircle!=''){ 1265 map.fitBounds(placeCircle.getBounds()); 1266 }else{ 1267 map.fitBounds(bounds); 1268 google.maps.event.addListenerOnce(map, 'idle', function() { 1269 if( map.getZoom()>15 ) { 1270 map.setZoom(15); 1271 } 1272 }); 1273 } 1274 1275 1276} 1277 1278 1279///////////////////////////////////////////////////////////////////////////////////////////////// 1280// open close map 1281///////////////////////////////////////////////////////////////////////////////////////////////// 1282 1283function wpestate_new_open_close_map(type){ 1284 "use strict"; 1285 if( jQuery('#gmap_wrapper').hasClass('fullmap') ){ 1286 return; 1287 } 1288 1289 if(mapfunctions_vars.open_close_status !== '1'){ // we can resize map 1290 1291 var current_height = jQuery('#googleMap').outerHeight(); 1292 var closed_height = parseInt(mapfunctions_vars.closed_height,10); 1293 var open_height = parseInt(mapfunctions_vars.open_height,10); 1294 var googleMap_h = open_height; 1295 var gmapWrapper_h = open_height; 1296 1297 if( infoBox!== null){ 1298 infoBox.close(); 1299 } 1300 1301 if ( current_height === closed_height ) { 1302 googleMap_h = open_height; 1303 if (Modernizr.mq('only all and (max-width: 940px)')) { 1304 gmapWrapper_h = open_height; 1305 } else { 1306 jQuery('#gmap-menu').show(); 1307 gmapWrapper_h = open_height; 1308 } 1309 1310 wpestate_new_show_advanced_search(); 1311 vertical_off=0; 1312 jQuery('#openmap').empty().append('<i class="fas fa-angle-up"></i>'+mapfunctions_vars.close_map); 1313 1314 } else if(type===2) { 1315 jQuery('#gmap-menu').hide(); 1316 jQuery('#advanced_search_map_form').hide(); 1317 googleMap_h = gmapWrapper_h = closed_height; 1318 1319 // hide_advanced_search(); 1320 wpestate_new_hide_advanced_search(); 1321 vertical_off=150; 1322 } 1323 jQuery('#gmap_wrapper').css('height', gmapWrapper_h+'px'); 1324 jQuery('#googleMap').css('height', googleMap_h+'px'); 1325 jQuery('.tooltip').fadeOut("fast"); 1326 1327 if(wp_estate_kind_of_map===1){ 1328 setTimeout(function(){google.maps.event.trigger(map, "resize"); }, 300); 1329 } 1330 } 1331} 1332 1333 1334 1335 1336 1337///////////////////////////////////////////////////////////////////////////////////////////////// 1338// build map cluter 1339///////////////////////////////////////////////////////////////////////////////////////////////// 1340function wpestate_map_cluster(){ 1341 "use strict"; 1342 1343 if(mapfunctions_vars.user_cluster==='yes'){ 1344 clusterStyles = [ 1345 { 1346 textColor: '#ffffff', 1347 opt_textColor: '#ffffff', 1348 url: images['cloud_pin'], 1349 height: 72, 1350 width: 72, 1351 textSize:15, 1352 1353 } 1354 ]; 1355 mcOptions = {gridSize: 50, 1356 ignoreHidden:true, 1357 maxZoom: parseInt( mapfunctions_vars.zoom_cluster,10), 1358 styles: clusterStyles 1359 }; 1360 mcluster = new MarkerClusterer(map, gmarkers, mcOptions); 1361 mcluster.setIgnoreHidden(true); 1362 } 1363 1364} 1365 1366 1367 1368///////////////////////////////////////////////////////////////////////////////////////////////// 1369/// zoom
1370///////////////////////////////////////////////////////////////////////////////////////////////// 1371 1372 1373if( document.getElementById('gmapzoomplus') ){ 1374 jQuery('#gmapzoomplus').on('click',function(){ 1375 "use strict"; 1376 var current= parseInt( map.getZoom(),10); 1377 current++; 1378 if(current>20){ 1379 current=20; 1380 } 1381 map.setZoom(current); 1382 }); 1383} 1384 1385 1386if( document.getElementById('gmapzoomminus') ){ 1387 jQuery('#gmapzoomminus').on('click',function(){ 1388 "use strict"; 1389 var current= parseInt( map.getZoom(),10); 1390 current--; 1391 if(current<0){ 1392 current=0; 1393 } 1394 map.setZoom(current); 1395 }); 1396} 1397 1398 1399 1400///////////////////////////////////////////////////////////////////////////////////////////////// 1401/// geolocation 1402///////////////////////////////////////////////////////////////////////////////////////////////// 1403 1404if( document.getElementById('geolocation-button') ){ 1405 jQuery('#geolocation-button').on('click',function(){ 1406 "use strict"; 1407 wpestate_myposition(map); 1408 wpestate_close_adv_search(); 1409 }); 1410} 1411 1412 1413if( document.getElementById('mobile-geolocation-button') ){ 1414 jQuery('#mobile-geolocation-button').on('click',function(){ 1415 "use strict"; 1416 wpestate_myposition(map); 1417 wpestate_close_adv_search(); 1418 }); 1419} 1420 1421 1422 1423 1424 1425function wpestate_myposition(map){ 1426 "use strict"; 1427 if(navigator.geolocation){ 1428 var latLong; 1429 if (location.protocol === 'https:') { 1430 navigator.geolocation.getCurrentPosition(wpestate_showMyPosition_original,wpestate_errorCallback,{timeout:10000}); 1431 }else{ 1432 jQuery.getJSON("http://ipinfo.io", function(ipinfo){ 1433 latLong = ipinfo.loc.split(","); 1434 wpestate_showMyPosition (latLong); 1435 }); 1436 } 1437 1438 }else{ 1439 alert(mapfunctions_vars.geo_no_brow); 1440 } 1441} 1442 1443 1444function wpestate_errorCallback(){ 1445 "use strict"; 1446 alert(mapfunctions_vars.geo_no_pos); 1447} 1448 1449 1450 1451 1452function wpestate_showMyPosition_original(pos){ 1453 "use strict"; 1454 if(wp_estate_kind_of_map===1){ 1455 var shape = { 1456 coord: [1, 1, 1, 38, 38, 59, 59 , 1], 1457 type: 'poly' 1458 }; 1459 1460 var MyPoint= new google.maps.LatLng( pos.coords.latitude, pos.coords.longitude); 1461 map.setCenter(MyPoint); 1462 1463 var marker = new google.maps.Marker({ 1464 position: MyPoint, 1465 map: map, 1466 icon: wpestate_custompinchild(), 1467 shape: shape, 1468 title: '', 1469 zIndex: 999999999, 1470 image:'', 1471 price:'', 1472 category:'', 1473 action:'', 1474 link:'' , 1475 infoWindowIndex : 99 , 1476 radius: parseInt(mapfunctions_vars.geolocation_radius,10)+' '+mapfunctions_vars.geo_message 1477 }); 1478 1479 var populationOptions = { 1480 strokeColor: '#67cfd8', 1481 strokeOpacity: 0.6, 1482 strokeWeight: 1, 1483 fillColor: '#67cfd8', 1484 fillOpacity: 0.2, 1485 map: map, 1486 center: MyPoint, 1487 radius: parseInt(mapfunctions_vars.geolocation_radius,10) 1488 }; 1489 1490 var cityCircle = new google.maps.Circle(populationOptions); 1491 1492 var label = new Label({ 1493 map: map 1494 }); 1495 label.bindTo('position', marker); 1496 label.bindTo('text', marker, 'radius'); 1497 label.bindTo('visible', marker); 1498 label.bindTo('clickable', marker); 1499 label.bindTo('zIndex', marker); 1500 }else{ 1501 1502 var new_pos=[pos.coords.latitude, pos.coords.longitude]; 1503 wprentals_draw_leaflet_circle(new_pos); 1504 } 1505 1506} 1507 1508 1509var geo_markers = []; 1510var geo_circle = []; 1511var geo_label = []; 1512 1513function wpestate_showMyPosition(pos){ 1514 "use strict"; 1515 1516 if(wp_estate_kind_of_map===1){ 1517 wpresidence_draw_google_circle(pos); 1518 }else if(wp_estate_kind_of_map===2){ 1519 wprentals_draw_leaflet_circle(pos) 1520 } 1521 1522} 1523 1524 1525function wprentals_draw_leaflet_circle(pos){ 1526 1527 L.circle( [pos[0],pos[1]], parseInt(mapfunctions_vars.geolocation_radius, 10)).addTo(map); 1528 1529 var markerImage = { 1530 iconUrl: wprentals_custompinchild_leaflet(), 1531 iconSize: [38, 59], 1532 iconAnchor: [20, 50],
1533 popupAnchor: [1, -50] 1534 }; 1535 var markerOptions = { 1536 riseOnHover: true 1537 }; 1538 1539 var markerCenter = L.latLng( pos[0], pos[1] ); 1540 markerOptions.icon = L.icon( markerImage ); 1541 L.marker( markerCenter, markerOptions ).addTo( map ); 1542 1543 1544 var wpresidence_leaflet_label = '<div class="wpresidence_leaflet_label">'; 1545 wpresidence_leaflet_label+=parseInt(mapfunctions_vars.geolocation_radius, 10) + ' ' + mapfunctions_vars.geo_message 1546 wpresidence_leaflet_label += '</div>'; 1547 1548 var myIcon = L.divIcon({ 1549 className:'someclass', 1550 iconSize: new L.Point(0, 0), 1551 html: wpresidence_leaflet_label 1552 }); 1553 1554 L.marker( markerCenter, {icon: myIcon} ).addTo( map ); 1555 1556 1557 map.panTo(markerCenter); 1558 map.setZoom(10); 1559} 1560 1561 1562 1563 1564 1565 1566 1567function wpresidence_draw_google_circle(pos){ 1568 "use strict"; 1569 for (var i = 0; i < geo_markers.length; i++) { 1570 geo_markers[i].setMap(null); 1571 geo_circle[i].setMap(null); 1572 geo_label[i].setMap(null); 1573 } 1574 1575 geo_markers = []; 1576 geo_circle = []; 1577 geo_label = []; 1578 1579 1580 var shape = { 1581 coord: [1, 1, 1, 38, 38, 59, 59 , 1], 1582 type: 'poly' 1583 }; 1584 1585 // var MyPoint= new google.maps.LatLng( pos.coords.latitude, pos.coords.longitude); 1586 1587 var MyPoint= new google.maps.LatLng( pos[0], pos[1]); 1588 map.setCenter(MyPoint); 1589 map.setZoom(13); 1590 var marker = new google.maps.Marker({ 1591 position: MyPoint, 1592 map: map, 1593 icon: wpestate_custompinchild(), 1594 shape: shape, 1595 title: '', 1596 zIndex: 999999999, 1597 image:'', 1598 price:'', 1599 category:'', 1600 action:'', 1601 link:'' , 1602 infoWindowIndex : 99 , 1603 radius: parseInt(mapfunctions_vars.geolocation_radius,10)+' '+mapfunctions_vars.geo_message 1604 }); 1605 geo_markers.push(marker); 1606 1607 1608 var populationOptions = { 1609 strokeColor: '#67cfd8', 1610 strokeOpacity: 0.6, 1611 strokeWeight: 1, 1612 fillColor: '#67cfd8', 1613 fillOpacity: 0.2, 1614 map: map, 1615 center: MyPoint, 1616 radius: parseInt(mapfunctions_vars.geolocation_radius,10) 1617 }; 1618 1619 1620 1621 var cityCircle = new google.maps.Circle(populationOptions); 1622 geo_circle.push(cityCircle); 1623 1624 var label = new Label({ 1625 map: map 1626 }); 1627 1628 label.bindTo('position', marker); 1629 label.bindTo('text', marker, 'radius'); 1630 label.bindTo('visible', marker); 1631 label.bindTo('clickable', marker); 1632 label.bindTo('zIndex', marker); 1633 geo_label.push(cityCircle); 1634} 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644function wpestate_custompinchild(){ 1645 "use strict"; 1646 1647 var custom_img; 1648 var extension=''; 1649 var ratio = jQuery(window).dense('devicePixelRatio'); 1650 1651 if(ratio>1){ 1652 extension='_2x'; 1653 } 1654 1655 1656 if( typeof( images['userpin'] )=== 'undefined' || images['userpin']===''){ 1657 custom_img= mapfunctions_vars.path+'/'+'userpin'+extension+'.png'; 1658 }else{ 1659 custom_img=images['userpin']; 1660 if(ratio>1){ 1661 custom_img=wpestate_get_custom_retina_pin(custom_img); 1662 } 1663 } 1664 1665 1666 1667 1668 var image; 1669 if(ratio>1){ 1670 image = { 1671 url: custom_img, 1672 size: new google.maps.Size(88, 96), 1673 scaledSize : new google.maps.Size(44, 48), 1674 origin: new google.maps.Point(0,0), 1675 anchor: new google.maps.Point(16,59 ) 1676 }; 1677 1678 }else{ 1679 image = { 1680 url: custom_img, 1681 size: new google.maps.Size(59, 59), 1682 origin: new google.maps.Point(0,0), 1683 anchor: new google.maps.Point(16,59 ) 1684 }; 1685 } 1686 1687 1688 return image; 1689 1690} 1691 1692 1693 1694 1695///////////////////////////////////////////////////////////////////////////////////////////////// 1696/// 1697///////////////////////////////////////////////////////////////////////////////////////////////// 1698 1699if( document.getElementById('gmap') ){ 1700 google.maps.event.addDomListener(document.getElementById('gmap'), 'mouseout', function () { 1701 google.maps.event.trigger(map, "resize"); 1702 }); 1703} 1704 1705 1706if( document.getElementById('search_map_button') ){ 1707 google.maps.event.addDomListener(document.getElementById('search_map_button'), 'click', function () { 1708 infoBox.close(); 1709 }); 1710} 1711 1712 1713 1714if( document.getElementById('advanced_search_map_button') ){ 1715 google.maps.event.addDomListener(document.getElementById('advanced_search_map_button'), 'click', function () { 1716 infoBox.close(); 1717 }); 1718} 1719
1720//////////////////////////////////////////////////////////////////////////////////////////////// 1721/// navigate troguh pins 1722/////////////////////////////////////////////////////////////////////////////////////////////// 1723 1724jQuery('#gmap-next').on( 'click', function(event) { 1725 "use strict"; 1726 current_place++; 1727 external_action_ondemand=1; 1728 lealet_map_move_on_hover=1; 1729 1730 if (current_place>gmarkers.length){ 1731 current_place=1; 1732 } 1733 while(gmarkers[current_place-1].visible===false){ 1734 current_place++; 1735 if (current_place>gmarkers.length){ 1736 current_place=1; 1737 } 1738 } 1739 1740 if( map.getZoom() <15 ){ 1741 map.setZoom(15); 1742 } 1743 1744 1745 1746 1747 if(wp_estate_kind_of_map===1){ 1748 google.maps.event.trigger(gmarkers[current_place-1], 'click'); 1749 }else if(wp_estate_kind_of_map===2){ 1750 1751 map.setView(gmarkers[current_place - 1].getLatLng()); 1752 if (! gmarkers[current_place - 1]._icon) { 1753 gmarkers[current_place - 1].__parent.spiderfy(); 1754 } 1755 lealet_map_move_on_hover=1; 1756 1757 map.setZoom(20); 1758 1759 if( (current_place - 1)==0 || (current_place - 1)==gmarkers.length ){ 1760 setTimeout(function(){ gmarkers[current_place - 1].fire('click'); }, 1000); 1761 }else{ 1762 gmarkers[current_place - 1].fire('click'); 1763 } 1764 1765 1766 lealet_map_move_on_hover=1; 1767 wpestate_map_callback( wpestate_new_open_close_map ); 1768 } 1769 1770}); 1771 1772 1773jQuery('#gmap-prev').on( 'click', function(event) { 1774 "use strict"; 1775 external_action_ondemand=1; 1776 lealet_map_move_on_hover=1; 1777 current_place--; 1778 if (current_place<1){ 1779 current_place=gmarkers.length; 1780 } 1781 while(gmarkers[current_place-1].visible===false){ 1782 current_place--; 1783 if (current_place>gmarkers.length){ 1784 current_place=1; 1785 } 1786 } 1787 if( map.getZoom() <15 ){ 1788 map.setZoom(15); 1789 } 1790 1791 1792 if(wp_estate_kind_of_map===1){ 1793 google.maps.event.trigger(gmarkers[current_place-1], 'click'); 1794 }else if(wp_estate_kind_of_map===2){
1795 map.setView(gmarkers[current_place - 1].getLatLng()); 1796 if (! gmarkers[current_place - 1]._icon) gmarkers[current_place - 1].__parent.spiderfy(); 1797 lealet_map_move_on_hover=1; 1798 1799 map.setZoom(20); 1800 1801 if( (current_place - 1)==0 || (current_place )==gmarkers.length ){ 1802 setTimeout(function(){ gmarkers[current_place - 1].fire('click'); }, 1000); 1803 }else{ 1804 gmarkers[current_place - 1].fire('click'); 1805 } 1806 1807 lealet_map_move_on_hover=1; 1808 wpestate_map_callback( wpestate_new_open_close_map ); 1809 } 1810 current_place--; 1811}); 1812 1813 1814 1815 1816 1817 1818 1819 1820/////////////////////////////////////////////////////////////////////////////////////////////////////////// 1821/// filter pins 1822////////////////////////////////////////////////////////////////////////////////////////////////////////// 1823 1824jQuery('.advanced_action_div li').on( 'click', function(event) { 1825"use strict"; 1826 var action = jQuery(this).val(); 1827}); 1828 1829 1830 1831 1832 1833if( document.getElementById('gmap-menu') ){ 1834 google.maps.event.addDomListener(document.getElementById('gmap-menu'), 'click', function (event) { 1835 "use strict"; 1836 infoBox.close(); 1837 1838 if (event.target.nodeName==='INPUT'){ 1839 category=event.target.className; 1840 1841 if(event.target.name==="filter_action[]"){ 1842 if(actions.indexOf(category)!==-1){ 1843 actions.splice(actions.indexOf(category),1); 1844 }else{ 1845 actions.push(category); 1846 } 1847 } 1848 1849 if(event.target.name==="filter_type[]"){ 1850 if(categories.indexOf(category)!==-1){ 1851 categories.splice(categories.indexOf(category),1); 1852 }else{ 1853 categories.push(category); 1854 } 1855 } 1856 1857 show(actions,categories); 1858 } 1859 1860 }); 1861} 1862 1863function wpestate_getCookieMap(cname) { 1864 "use strict"; 1865 var name = cname + "="; 1866 var ca = document.cookie.split(';'); 1867 for(var i=0; i<ca.length; i++) { 1868 var c = ca[i]; 1869 while (c.charAt(0)==' ') c = c.substring(1); 1870 if (c.indexOf(name) == 0) return c.substring(name.length,c.length); 1871 } 1872 return ""; 1873} 1874 1875 1876 1877function wpestate_get_custom_value_tab_search(slug){ 1878 "use strict"; 1879 var value=''; 1880 var is_drop=0; 1881 1882 1883 if(slug === 'adv_categ' || slug === 'adv_actions' || slug === 'advanced_city' || slug === 'advanced_area' || slug === 'county-state' ){ 1884 1885 if(jQuery('.tab-pane.active #'+slug).hasClass('wpestatemultiselectselectpicker') ){ 1886 value = jQuery('.tab-pane.active #'+slug).val(); 1887 if(value=='')value='all'; 1888 1889 }else{ 1890 value = jQuery('.tab-pane.active #'+slug).attr('data-value'); 1891 } 1892 1893 1894 1895 1896 1897 } else if(slug === 'property_price' && mapfunctions_vars.slider_price==='yes'){ 1898 value = jQuery('.tab-pane.active #price_low').val(); 1899 }else if(slug === 'property-country'){ 1900 value = jQuery('.tab-pane.active #advanced_country').attr('data-value'); 1901 }else if(slug === 'property_status'){ 1902 1903 if(jQuery('.tab-pane.active #adv_status').hasClass('wpestatemultiselectselectpicker') ){ 1904 value = jQuery('.tab-pane.active #adv_status').val(); 1905 if(value=='')value='all'; 1906 }else{ 1907 value = jQuery('.tab-pane.active #adv_status').attr('data-value'); 1908 } 1909 1910 1911 }else if(slug === 'adv_location'){ 1912 1913 1914 value = jQuery('.tab-pane.active .adv_locations_search').val(); 1915 1916 1917 jQuery('.adv_locations_search').each(function() { 1918 1919 }); 1920 1921 }else{ 1922 1923 if(slug!==''){ 1924 if( jQuery('.tab-pane.active #'+slug).hasClass('filter_menu_trigger') ){ 1925 value = jQuery('.tab-pane.active #'+slug).attr('data-value'); 1926 is_drop=1; 1927 }else{ 1928 value = jQuery('.tab-pane.active #'+slug).val() ; 1929 } 1930 } 1931 } 1932 1933 return value; 1934 1935} 1936 1937 1938function wpestate_get_custom_value(slug){ 1939 "use strict"; 1940 var value; 1941 var is_drop=0; 1942 1943 if(slug === 'adv_categ' || slug === 'adv_actions' || slug === 'advanced_city' || slug === 'advanced_area' || slug === 'county-state'){ 1944 value = jQuery('#'+slug).attr('data-value'); 1945 1946 if(jQuery('#'+slug).hasClass('wpestatemultiselectselectpicker') ){ 1947 value = jQuery('#'+slug).val(); 1948 if(value=='')value='all'; 1949 1950 }else{ 1951 value = jQuery('#'+slug).attr('data-value'); 1952 1953 } 1954 1955 1956 1957 1958 } else if(slug === 'property_price' && mapfunctions_vars.slider_price==='yes'){ 1959 value = jQuery('#price_low').val(); 1960 }else if(slug === 'property_status'){ 1961 if(jQuery('#adv_status').hasClass('wpestatemultiselectselectpicker') ){ 1962 value = jQuery('#adv_status').val(); 1963 if(value=='')value='all'; 1964 1965 }else{ 1966 value = jQuery('#adv_status').attr('data-value'); 1967 } 1968 }else if(slug === 'property-country'){ 1969 value = jQuery('#advanced_country').attr('data-value'); 1970 }else if(slug === 'adv_location'){ 1971 1972 value = jQuery('.adv_locations_search').val(); 1973 1974 1975 }else{ 1976 1977 if( jQuery('#'+slug).hasClass('filter_menu_trigger') ){ 1978 value = jQuery('#'+slug).attr('data-value'); 1979 is_drop=1; 1980 }else{ 1981 value = jQuery('#'+slug).val() ; 1982 1983 } 1984 } 1985 1986 1987 if (typeof(value)!=='undefined'&& is_drop===0){ 1988 // value= value .replace(" ","-"); 1989 } 1990 1991 return value; 1992 1993} 1994 1995 1996 1997 1998 function wpestate_show_pins() { 1999 "use strict"; 2000 2001 jQuery("#results").show(); 2002 jQuery("#results_wrapper").empty().append('<div class="preview_results_loading">'+mapfunctions_vars.loading_results+'</div>').show(); 2003 2004 var action, category, city, area, rooms, baths, min_price, price_max, ajaxurl,postid,halfmap, all_checkers,newpage; 2005 2006 if( typeof infoBox!=='undefined' && infoBox!== null ){ 2007 infoBox.close(); 2008 } 2009 2010 jQuery('#gmap-loading').show(); 2011 //- removed && googlecode_regular_vars.is_adv_search!=='1' 2012 2013 if( typeof(googlecode_regular_vars)!='undefined' ) { 2014 if( (mapfunctions_vars.adv_search_type==='8' || mapfunctions_vars.adv_search_type==='9') && mapfunctions_vars.is_half_map_list!=='1' ){ 2015 wpestate_show_pins_type2_tabs(); 2016 return; 2017 } 2018 2019 if(mapfunctions_vars.adv_search_type==='2' && mapfunctions_vars.is_half_map_list!=='1' && mapfunctions_vars.is_adv_search!=='1' ){ 2020 wpestate_show_pins_type2(); 2021 return; 2022 } 2023 }else{ 2024 if( (mapfunctions_vars.adv_search_type==='8' || mapfunctions_vars.adv_search_type==='9') ){ 2025 wpestate_show_pins_type2_tabs(); 2026 return; 2027 } 2028 2029 if(mapfunctions_vars.adv_search_type==='2' && mapfunctions_vars.is_half_map_list!=='1' ){ 2030 wpestate_show_pins_type2(); 2031 return; 2032 } 2033 } 2034 2035 2036 2037 if(mapfunctions_vars.custom_search==='yes'){ 2038 wpestate_show_pins_custom_search(); 2039 return; 2040 } 2041 2042 2043 2044 action = jQuery('#adv_actions').attr('data-value'); 2045 category = jQuery('#adv_categ').attr('data-value'); 2046 city = jQuery('#advanced_city').attr('data-value'); 2047 area = jQuery('#advanced_area').attr('data-value'); 2048 rooms = parseFloat(jQuery('#adv_rooms').val(), 10); 2049 baths = parseFloat(jQuery('#adv_bath').val(), 10); 2050 min_price = parseFloat(jQuery('#price_low').val(), 10); 2051 price_max = parseFloat(jQuery('#price_max').val(), 10); 2052 postid = parseFloat(jQuery('#adv-search-1').attr('data-postid'), 10); 2053 ajaxurl = ajaxcalls_vars.admin_url + 'admin-ajax.php'; 2054 2055 2056 2057 if ( parseInt(mapfunctions_vars.is_half)===1 ){ 2058 if(first_time_wpestate_show_inpage_ajax_half===0){ 2059 first_time_wpestate_show_inpage_ajax_half=1; 2060 }else{ 2061 wpestate_show_inpage_ajax_half(); 2062 } 2063 2064 } 2065 2066 all_checkers = ''; 2067 jQuery('.search_wrapper .extended_search_check_wrapper input[type="checkbox"]').each(function () { 2068 if (jQuery(this).is(":checked")) { 2069 all_checkers = all_checkers + "," + jQuery(this).attr("name-title"); 2070 } 2071 }); 2072 2073 halfmap = 0; 2074 newpage = 0; 2075 if( jQuery('#google_map_prop_list_sidebar').length ){ 2076 halfmap = 1; 2077 } 2078 2079 postid=1; 2080 if( document.getElementById('search_wrapper') ){
2081 postid = parseInt(jQuery('#search_wrapper').attr('data-postid'), 10); 2082 } 2083 2084 2085 var geo_lat = ''; 2086 var geo_long = ''; 2087 var geo_rad = ''; 2088 2089 if( jQuery("#geolocation_search").length > 0){ 2090 geo_lat = jQuery('#geolocation_lat').val(); 2091 geo_long = jQuery('#geolocation_long').val(); 2092 geo_rad = jQuery('#geolocation_radius').val(); 2093 2094 } 2095 2096 var nonce = jQuery('#wpestate_ajax_filtering').val(); 2097 jQuery.ajax({ 2098 type: 'POST', 2099 url: ajaxurl, 2100 dataType: 'json', 2101 data: { 2102 'action' : 'wpestate_classic_ondemand_pin_load', 2103 'action_values' : action, 2104 'category_values' : category, 2105 'city' : city, 2106 'area' : area, 2107 'advanced_rooms' : rooms, 2108 'advanced_bath' : baths, 2109 'price_low' : min_price, 2110 'price_max' : price_max, 2111 'newpage' : newpage, 2112 'postid' : postid, 2113 'halfmap' : halfmap, 2114 'all_checkers' : all_checkers, 2115 'geo_lat' : geo_lat, 2116 'geo_long' : geo_long, 2117 'geo_rad' : geo_rad, 2118 'security' : nonce 2119 }, 2120 success: function (data) { 2121 var no_results = parseInt(data.no_results); 2122 2123 if(no_results!==0){ 2124 wpestate_load_on_demand_pins(data.markers,no_results,1); 2125 }else{ 2126 wpestate_show_no_results(); 2127 } 2128 jQuery('#gmap-loading').hide(); 2129 2130 }, 2131 error: function (errorThrown) { 2132 2133 } 2134 });//end ajax 2135 2136 } 2137 2138 2139 2140 2141 2142function wpestate_show_pins_type2(){ 2143 "use strict"; 2144 var action, category, location_search, ajaxurl,postid,halfmap, all_checkers,newpage; 2145 action = jQuery('#adv_actions').attr('data-value'); 2146 category = jQuery('#adv_categ').attr('data-value'); 2147 location_search = jQuery('#adv_location').val();
2148 postid = parseInt(jQuery('#adv-search-1').attr('data-postid'), 10); 2149 ajaxurl = ajaxcalls_vars.admin_url + 'admin-ajax.php'; 2150 2151 halfmap = 0; 2152 newpage = 0; 2153 2154 if( jQuery('#google_map_prop_list_sidebar').length ){ 2155 halfmap = 1; 2156 } 2157 2158 postid=1; 2159 2160 if( document.getElementById('search_wrapper') ){ 2161 postid = parseInt(jQuery('#search_wrapper').attr('data-postid'), 10); 2162 } 2163 var nonce = jQuery('#wpestate_ajax_filtering').val(); 2164 jQuery.ajax({ 2165 type: 'POST', 2166 url: ajaxurl, 2167 dataType: 'json', 2168 2169 data: { 2170 'action' : 'wpestate_classic_ondemand_pin_load_type2', 2171 'action_values' : action, 2172 'category_values' : category, 2173 'location' : location_search, 2174 'security' : nonce 2175 }, 2176 success: function (data) { 2177 var no_results = parseInt(data.no_results); 2178 2179 if(no_results!==0){ 2180 wpestate_load_on_demand_pins(data.markers,no_results,1); 2181 }else{ 2182 wpestate_show_no_results(); 2183 } 2184 jQuery('#gmap-loading').hide(); 2185 2186 }, 2187 error: function (errorThrown) { 2188 } 2189 });//end ajax 2190 2191 2192 if ( parseInt(mapfunctions_vars.is_half)===1 ){ 2193 if(first_time_wpestate_show_inpage_ajax_half===0){ 2194 first_time_wpestate_show_inpage_ajax_half=1; 2195 }else{ 2196 wpestate_show_inpage_ajax_half(); 2197 } 2198 2199 } 2200 } 2201 2202 2203 2204 2205 2206 2207function wpestate_show_pins_type2_tabs(){ 2208 "use strict"; 2209 var action, category, location_search, ajaxurl,postid,halfmap, all_checkers,newpage,picked_tax; 2210 2211 action = jQuery('.tab-pane.active #adv_actions').attr('data-value'); 2212 if(typeof action === 'undefined'){ 2213 action=''; 2214 } 2215 category = jQuery('.tab-pane.active #adv_categ').attr('data-value'); 2216 if(typeof category === 'undefined'){ 2217 category=''; 2218 } 2219 location_search = jQuery('.tab-pane.active #adv_location').val(); 2220 picked_tax = jQuery('.tab-pane.active .picked_tax').val(); 2221 2222
2223 postid = parseInt(jQuery('#adv-search-1').attr('data-postid'), 10); 2224 ajaxurl = ajaxcalls_vars.admin_url + 'admin-ajax.php'; 2225 ajaxurl = ajaxcalls_vars.wpestate_ajax; 2226 halfmap = 0; 2227 newpage = 0; 2228 2229 2230 if( jQuery('#google_map_prop_list_sidebar').length ){ 2231 halfmap = 1; 2232 } 2233 2234 postid=1; 2235 2236 if( document.getElementById('search_wrapper') ){ 2237 postid = parseInt(jQuery('#search_wrapper').attr('data-postid'), 10); 2238 } 2239 2240 var term_id=jQuery('.tab-pane.active .term_id_class').val(); 2241 2242 all_checkers = ''; 2243 jQuery('.tab-pane.active .extended_search_check_wrapper input[type="checkbox"]').each(function () { 2244 if (jQuery(this).is(":checked")) { 2245 all_checkers = all_checkers + "," + jQuery(this).attr("name-title"); 2246 } 2247 }); 2248 2249 var nonce = jQuery('#wpestate_ajax_filtering').val(); 2250 2251 jQuery.ajax({ 2252 type: 'POST', 2253 url: ajaxurl, 2254 dataType: 'json', 2255 2256 data: { 2257 'action' : 'wpestate_classic_ondemand_pin_load_type2_tabs', 2258 'action_values' : action, 2259 'category_values' : category, 2260 'location' : location_search, 2261 'picked_tax' : picked_tax, 2262 'all_checkers' : all_checkers, 2263 'security' : nonce 2264 }, 2265 success: function (data) { 2266 2267 var no_results = parseInt(data.no_results); 2268 2269 if(no_results!==0){ 2270 wpestate_load_on_demand_pins(data.markers,no_results,1); 2271 }else{ 2272 wpestate_show_no_results(); 2273 } 2274 jQuery('#gmap-loading').hide(); 2275 2276 }, 2277 error: function (errorThrown) { 2278 2279 } 2280 });//end ajax 2281 2282 if ( parseInt(mapfunctions_vars.is_half)===1 ){ 2283 if(first_time_wpestate_show_inpage_ajax_half===0){ 2284 first_time_wpestate_show_inpage_ajax_half=1; 2285 }else{ 2286 wpestate_show_inpage_ajax_half(); 2287 } 2288 2289 } 2290 } 2291 2292 2293function wpestate_show_pins_custom_search(){ 2294 "use strict"; 2295 2296 2297 2298 var ajaxurl,initial_array_last_item,array_last_item,how_holder,slug_holder,val_holder,position, inserted_val,temp_val,term_id,halfmap,newpage,postid,slider_min,slider_max; 2299 ajaxurl = ajaxcalls_vars.wpestate_ajax;; 2300 inserted_val = 0; 2301 array_last_item = parseInt( mapfunctions_vars.fields_no,10); 2302 initial_array_last_item =array_last_item; 2303 val_holder = []; 2304 slug_holder = []; 2305 how_holder = []; 2306 2307 //slug_holder = mapfunctions_vars.slugs; 2308 slug_holder = JSON.parse(JSON.stringify(mapfunctions_vars.slugs)); 2309 2310 // how_holder = mapfunctions_vars.hows; 2311 how_holder= JSON.parse(JSON.stringify(mapfunctions_vars.hows)); 2312 2313 2314 2315 var term_counter=0; 2316 2317 2318 2319 if( mapfunctions_vars.slider_price ==='yes' ){ 2320 slider_min = jQuery('#price_low').val(); 2321 slider_max = jQuery('#price_max').val(); 2322 2323 } 2324 2325 if(jQuery('.wpresidence-component3-min-price_input_class').length>0){ 2326 2327 slider_min = jQuery('.wpresidence-component3-min-price_input_class').val(); 2328 slider_max = jQuery('.wpresidence-component3-max-price_input_class').val(); 2329 } 2330 2331 2332 var i; 2333 term_counter=parseInt( jQuery('.tab-pane.active').find('.term_counter').val(),10); 2334 2335 2336 2337 2338 if( (mapfunctions_vars.adv_search_type==='6' || mapfunctions_vars.adv_search_type==='7' ) ){ //&& !jQuery('.halfsearch')[0] 2339 term_id=jQuery('.tab-pane.active .term_id_class').val(); 2340 2341 if( mapfunctions_vars.slider_price ==='yes' ){ 2342 slider_min = jQuery('#price_low_'+term_id).val(); 2343 slider_max = jQuery('#price_max_'+term_id).val(); 2344 } 2345 2346 if(jQuery('.tab-pane.active .wpresidence-component3-min-price_input_class').length>0){ 2347 slider_min = jQuery('.tab-pane.active .wpresidence-component3-min-price_input_class').val(); 2348 slider_max = jQuery('.tab-pane.active .wpresidence-component3-max-price_input_class').val(); 2349 } 2350 2351 var start_counter = term_counter *mapfunctions_vars.fields_no; 2352 if(term_counter>0){ 2353 array_last_item=(array_last_item*term_counter)+array_last_item; 2354 2355 } 2356 2357 2358 for ( i=start_counter; i<array_last_item;i++){ 2359 2360 2361 if ( how_holder[i]=='date bigger' || how_holder[i]=='date smaller'){ 2362 temp_val = wpestate_get_custom_value_tab_search (term_id+slug_holder[i]); 2363 }else{ 2364 temp_val = wpestate_get_custom_value_tab_search (slug_holder[i]); 2365 } 2366 2367 if(typeof(temp_val)==='undefined'){ 2368 temp_val=''; 2369 } 2370 2371 val_holder.push( temp_val ); 2372 2373 } 2374 2375 2376 2377 }else{ 2378 for (i=0; i<array_last_item;i++){ 2379 2380 temp_val = wpestate_get_custom_value (slug_holder[i]); 2381 if(typeof(temp_val)==='undefined'){ 2382 temp_val=''; 2383 } 2384 val_holder.push( temp_val ); 2385 } 2386 2387 } 2388 2389 2390 2391 2392 2393 if( (mapfunctions_vars.adv_search_type==='6' || mapfunctions_vars.adv_search_type==='7' || mapfunctions_vars.adv_search_type==='8' || mapfunctions_vars.adv_search_type==='9' ) ){ 2394 var tab_tax=jQuery('.adv_search_tab_item.active').attr('data-tax'); 2395 2396 2397 if( jQuery('.halfsearch')[0] ){ 2398 tab_tax=jQuery('.halfsearch').attr('data-tax'); 2399 } 2400 2401 2402 if(tab_tax === 'property_category'){ 2403 slug_holder[array_last_item]='adv_categ'; 2404 }else if(tab_tax === 'property_action_category'){ 2405 slug_holder[array_last_item]='adv_actions'; 2406 }else if(tab_tax === 'property_city'){ 2407 slug_holder[array_last_item]='advanced_city'; 2408 }else if(tab_tax === 'property_area'){ 2409 slug_holder[array_last_item]='advanced_area'; 2410 }else if(tab_tax === 'property_county_state'){ 2411 slug_holder[array_last_item]='county-state'; 2412 } 2413 2414 how_holder[array_last_item]='like'; 2415 2416 2417 val_holder[initial_array_last_item]=jQuery('.adv_search_tab_item.active').attr('data-term'); 2418 2419 2420 } 2421 2422 2423 if ( parseInt(mapfunctions_vars.is_half)===1 ){ 2424 if(first_time_wpestate_show_inpage_ajax_half===0){ 2425 2426 first_time_wpestate_show_inpage_ajax_half=1; 2427 }else{ 2428 2429 wpestate_show_inpage_ajax_half(); 2430 } 2431 2432 } 2433 //was 2 times ! 2434 2435 var all_checkers = ''; 2436 2437 if( mapfunctions_vars.adv_search_type==='6' ){ 2438 jQuery('.tab-pane.active .extended_search_check_wrapper input[type="checkbox"]').each(function () { 2439 if (jQuery(this).is(":checked")) { 2440 all_checkers = all_checkers + "," + jQuery(this).attr("name-title"); 2441 } 2442 }); 2443 }else{ 2444 2445 jQuery('.search_wrapper .extended_search_check_wrapper input[type="checkbox"]').each(function () { 2446 if (jQuery(this).is(":checked")) { 2447 all_checkers = all_checkers + "," + jQuery(this).attr("name-title"); 2448 } 2449 }); 2450 } 2451 2452 2453 2454 2455 2456 halfmap = 0; 2457 newpage = 0; 2458 if( jQuery('#google_map_prop_list_sidebar').length ){ 2459 halfmap = 1; 2460 } 2461 2462 postid=1; 2463 if( document.getElementById('search_wrapper') ){
2464 postid = parseInt(jQuery('#search_wrapper').attr('data-postid'), 10); 2465 } 2466 2467 var filter_search_action10 =''; 2468 var adv_location10 =''; 2469 2470 if( mapfunctions_vars.adv_search_type==='10' ){ 2471 filter_search_action10 = jQuery('#adv_actions').attr('data-value'); 2472 adv_location10 = jQuery('#adv_location').val(); 2473 2474 } 2475 2476 2477 var filter_search_action11 = ''; 2478 var filter_search_categ11 = ''; 2479 var keyword_search = ''; 2480 keyword_search = jQuery('#keyword').val(); 2481 if( mapfunctions_vars.adv_search_type==='11' ){ 2482 filter_search_action11 = jQuery('#adv_actions').attr('data-value'); 2483 filter_search_categ11 = jQuery('#adv_categ').attr('data-value'); 2484 keyword_search = jQuery('#keyword_search').val(); 2485 } 2486 2487 2488 var geo_lat = ''; 2489 var geo_long = ''; 2490 var geo_rad = ''; 2491 var componentsbeds = ''; 2492 var componentsbaths= ''; 2493 2494 if( jQuery("#geolocation_search").length > 0){ 2495 geo_lat = jQuery('#geolocation_lat').val(); 2496 geo_long = jQuery('#geolocation_long').val(); 2497 geo_rad = jQuery('#geolocation_radius').val(); 2498 2499 } 2500 if (jQuery('.tab-pane.active .geolocation_search_item').length>0){ 2501 2502 geo_lat = jQuery('.tab-pane.active .geolocation_lat').val(); 2503 geo_long = jQuery('.tab-pane.active .geolocation_long').val(); 2504 geo_rad = jQuery('.tab-pane.active #geolocation_radius').val(); 2505 } 2506 2507 2508 if (jQuery('.wpestate-beds-baths-popoup-component').length>0){ 2509 componentsbeds = jQuery('.wpresidence-componentsbeds').val(); 2510 componentsbaths = jQuery('.wpresidence-componentsbaths').val(); 2511 } 2512 2513 2514 if (jQuery('.tab-pane.active .wpestate-beds-baths-popoup-component').length>0){ 2515 componentsbeds = jQuery('.tab-pane.active .wpresidence-componentsbeds').val(); 2516 componentsbaths = jQuery('.tab-pane.active .wpresidence-componentsbaths').val(); 2517 } 2518 2519 2520 2521 2522 var nonce = jQuery('#wpestate_ajax_filtering').val(); 2523 jQuery.ajax({ 2524 type: 'POST', 2525 url: ajaxurl, 2526 dataType: 'json', 2527 data: { 2528 'action' : 'wpestate_custom_ondemand_pin_load', 2529 'search_type' : mapfunctions_vars.adv_search_type, 2530 'val_holder' : val_holder, 2531 'newpage' : newpage, 2532 'postid' : postid, 2533 'halfmap' : halfmap, 2534 'slider_min' : slider_min, 2535 'slider_max' : slider_max, 2536 'all_checkers' : all_checkers, 2537 'filter_search_action10' : filter_search_action10, 2538 'adv_location10' : adv_location10, 2539 'filter_search_action11' : filter_search_action11, 2540 'filter_search_categ11' : filter_search_categ11, 2541 'keyword_search' : keyword_search, 2542 'geo_lat' : geo_lat, 2543 'geo_long' : geo_long, 2544 'geo_rad' : geo_rad, 2545 'term_counter' : term_counter, 2546 'componentsbeds' : componentsbeds, 2547 'componentsbaths' : componentsbaths, 2548 'security' : nonce 2549 }, 2550 success: function (data) { 2551 2552 2553 var no_results = parseInt(data.no_results); 2554 if(no_results!==0){ 2555 wpestate_load_on_demand_pins(data.markers,no_results,1); 2556 }else{ 2557 wpestate_show_no_results(); 2558 wpestate_start_placing_geo_marker(); 2559 } 2560 jQuery('#gmap-loading').hide(); 2561 2562 }, 2563 error: function (errorThrown) { 2564 2565 2566 } 2567 });//end ajax 2568 2569 2570 } 2571 2572 2573 2574 2575function wpestate_empty_map(){ 2576 "use strict"; 2577 if (typeof gmarkers !== 'undefined') { 2578 2579 if(wp_estate_kind_of_map== 1 ){ 2580 for (var i = 0; i < gmarkers.length; i++) { 2581 gmarkers[i].setVisible(false); 2582 gmarkers[i].setMap(null); 2583 } 2584 gmarkers = []; 2585 2586 2587 if( typeof (mcluster)!=='undefined'){ 2588 mcluster.clearMarkers(); 2589 } 2590 } else if (wp_estate_kind_of_map==2){ 2591 if(typeof map !='undefined'){ 2592 if (mapfunctions_vars.user_cluster === 'yes') { 2593 if(map.hasLayer(markers_cluster)){ 2594 map.removeLayer(markers_cluster); 2595 } 2596 }else{ 2597 for (var i = 0; i < gmarkers.length; i++) { 2598 map.removeLayer(gmarkers[i]); 2599 } 2600 } 2601 gmarkers = [];
2602 markers_cluster=L.markerClusterGroup({ 2603 showCoverageOnHover: false, 2604 iconCreateFunction: function(cluster) { 2605 return L.divIcon({ html: '<div class="leaflet_cluster">' + cluster.getChildCount() + '</div>' }); 2606 }, 2607 }); 2608 map.addLayer(markers_cluster); 2609 } 2610 } 2611 } 2612} 2613 2614 2615var use_geolocation_marker=0; 2616function wpestate_load_on_demand_pins(markers,no_results,show_results_bar){ 2617 "use strict"; 2618 jQuery('#gmap-noresult').hide(); 2619 2620 wpestate_empty_map(); 2621 if( document.getElementById('googleMap') ){ 2622 //wpestate_setMarkers(map, markers); 2623 bounds_list =undefined; 2624 wpresidence_map_general_set_markers(map, markers,1); 2625 2626 wpestate_preview_listings(markers); 2627 2628 //set map cluster 2629 wpresidence_map_general_cluster(); 2630 2631 wpresidence_map_general_fit_to_bounds(1); 2632 2633 }else{ 2634 wpestate_preview_listings(markers); 2635 } 2636 2637 wpestate_start_placing_geo_marker(); 2638} 2639 2640 2641 2642function wpestate_start_placing_geo_marker(){ 2643 2644 if( initialGeop === 0){ 2645 var place_lat = jQuery('#geolocation_lat').val(); 2646 var place_lng = jQuery('#geolocation_long').val(); 2647 2648 if(place_lat!=='' && place_lng!='' && typeof(place_lat)!=='undefined' && typeof(place_lng)!='undefined' ){ 2649 initialGeop=1; 2650 wpestate_geolocation_marker(place_lat,place_lng); 2651 } 2652 } 2653} 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665function wpestate_preview_listings(markers){ 2666 "use strict"; 2667 var i = 0; 2668 var to_append = ''; 2669 var image = ''; 2670 var title = ''; 2671 var link = ''; 2672 var clean_price = ''; 2673 var price = ''; 2674 for (i = 0; i < markers.length; i++) { 2675 image = decodeURIComponent(markers[i][18]); 2676 title = decodeURIComponent(markers[i][0]); 2677 link = decodeURIComponent(markers[i][9]); 2678 clean_price = decodeURIComponent(markers[i][11]); 2679 price = wpestate_get_price_currency ( decodeURIComponent(markers[i][5]),clean_price ); 2680 2681 to_append=to_append+'<div class="preview_listing_unit" data-href="'+link+'">'+image+' <h4>'+title+'</h4><div class="preview_details">'+price+'</div></div>'; 2682 2683 2684 } 2685 2686 jQuery('#results_wrapper').empty(); 2687 jQuery('#results_no').show().text( markers.length); 2688 2689 jQuery('#results_wrapper').append(to_append); 2690 2691 jQuery('.preview_listing_unit').on( 'click', function(event) { 2692 event.preventDefault(); 2693 var new_link; 2694 new_link = jQuery(this).attr('data-href'); 2695 window.open (new_link,'_self',false); 2696 }); 2697 2698 2699} 2700 2701 2702function wpestate_get_price_currency(price,clean_price){ 2703 "use strict"; 2704 var new_price =''; 2705 2706 var my_custom_curr_symbol = decodeURIComponent ( wpestate_getCookie_map('my_custom_curr_symbol') ); 2707 var my_custom_curr_coef = parseFloat( wpestate_getCookie_map('my_custom_curr_coef')); 2708 var my_custom_curr_pos = parseFloat( wpestate_getCookie_map('my_custom_curr_pos')); 2709 var my_custom_curr_cur_post= wpestate_getCookie_map('my_custom_curr_cur_post'); 2710 var slider_counter = 0; 2711 2712 2713 if (!isNaN(my_custom_curr_pos) && my_custom_curr_pos !== -1) { 2714 var temp_price =Number(clean_price*my_custom_curr_coef).toFixed(2); 2715 if (my_custom_curr_cur_post === 'before') { 2716 new_price = my_custom_curr_symbol+' '+temp_price; 2717 } else { 2718 new_price = temp_price+' '+my_custom_curr_symbol; 2719 } 2720 2721 } else { 2722 new_price=price; 2723 } 2724 2725 return new_price; 2726} 2727 2728function wpestate_getCookie_map(cname) { 2729 "use strict"; 2730 var name = cname + "="; 2731 var ca = document.cookie.split(';'); 2732 for(var i=0; i<ca.length; i++) { 2733 var c = ca[i]; 2734 while (c.charAt(0)==' ') c = c.substring(1); 2735 if (c.indexOf(name) == 0) return c.substring(name.length,c.length); 2736 } 2737 return ""; 2738 } 2739 2740 2741 2742function wpestate_show_no_results(){ 2743 "use strict"; 2744 jQuery('#results_no').show().text('0'); 2745 2746 jQuery("#results_wrapper").empty().append('<div class="preview_results_loading">'+mapfunctions_vars.half_no_results+'</div>').show(); 2747 jQuery('#gmap-noresult').show(); 2748 if( document.getElementById('google_map_prop_list_wrapper') ){ 2749 jQuery('#listing_ajax_container').empty().append('<p class=" no_results_title ">'+mapfunctions_vars.half_no_results+'</p>'); 2750 } 2751} 2752 2753 2754 2755function wpestate_show_inpage_ajax_tip2(){ 2756 "use strict"; 2757 if( jQuery('#gmap-full').hasClass('spanselected')){ 2758 jQuery('#gmap-full').trigger('click'); 2759 } 2760 2761 2762 if(mapfunctions_vars.custom_search==='yes'){ 2763 wpestate_custom_search_start_filtering_ajax(1); 2764 }else{ 2765 wpestate_start_filtering_ajax(1); 2766 } 2767} 2768 2769 2770 2771function wpestate_show_inpage_ajax_half(){ 2772 "use strict"; 2773 2774 jQuery('.half-pagination').remove(); 2775 if(mapfunctions_vars.custom_search==='yes'){ 2776 wpestate_custom_search_start_filtering_ajax(1); 2777 }else{ 2778 wpestate_start_filtering_ajax(1); 2779 } 2780} 2781 2782 2783function wpestate_enable_half_map_pin_action (){ 2784 "use strict"; 2785 2786 jQuery('#google_map_prop_list_sidebar .listing_wrapper').each(function(event){ 2787 var listing_id = jQuery(this).attr('data-listid'); 2788 2789 jQuery(this).on('mouseenter', function () { 2790 wpestate_hover_action_pin(listing_id); 2791 }) 2792 2793 jQuery(this).on('mouseleave', function () { 2794 wpestate_return_hover_action_pin(listing_id); 2795 }) 2796 2797 }); 2798 2799 2800 2801} 2802 2803 2804///////////////////////////////////////////////////////////////////////////////////////////////// 2805/// get pin image
2806///////////////////////////////////////////////////////////////////////////////////////////////// 2807function wpestate_convertToSlug(Text){ 2808 "use strict"; 2809 return Text 2810 .toLowerCase() 2811 .replace(/ /g,'-') 2812 .replace(/[^\w-]+/g,'') 2813 ; 2814} 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824function wpestate_custompin(image){ 2825 "use strict"; 2826 2827 if( !mapfunctions_vars.hidden_map ){ 2828 image ={ 2829 path: google.maps.SymbolPath.CIRCLE, 2830 scale: 60, 2831 fillColor: "#0073e1", 2832 fillOpacity: 0.4, 2833 strokeWeight: 0.2 2834 } 2835 return image; 2836 } 2837 2838 2839 2840 2841 var extension=''; 2842 var ratio = jQuery(window).dense('devicePixelRatio'); 2843 if(ratio>1){ 2844 extension='_2x'; 2845 } 2846 var custom_img; 2847 2848 2849 2850 if(mapfunctions_vars.use_single_image_pin==='no'){ 2851 if(image!==''){ 2852 if( typeof( images[image] )=== 'undefined' || images[image]===''){ 2853 custom_img= mapfunctions_vars.path+'/'+image+extension+'.png'; 2854 }else{ 2855 custom_img=images[image]; 2856 2857 if(ratio>1){ 2858 custom_img =wpestate_get_custom_retina_pin(custom_img); 2859 } 2860 } 2861 }else{ 2862 custom_img= mapfunctions_vars.path+'/none.png'; 2863 } 2864 2865 if(typeof (custom_img)=== 'undefined'){ 2866 custom_img= mapfunctions_vars.path+'/none.png'; 2867 } 2868 }else{ 2869 2870 if(ratio>1){ 2871 custom_img= wpestate_get_custom_retina_pin( images['single_pin'] ); 2872 }else{ 2873 custom_img= images['single_pin']; 2874 } 2875 } 2876 2877 2878 if(ratio>1){ 2879 image = { 2880 url: custom_img, 2881 size : new google.maps.Size(118, 118), 2882 scaledSize : new google.maps.Size(44, 48), 2883 origin: new google.maps.Point(0,0), 2884 anchor: new google.maps.Point(16,49 ), 2885 optimized:false 2886 }; 2887 2888 }else{ 2889 image = { 2890 url: custom_img, 2891 size : new google.maps.Size(59, 59), 2892 origin: new google.maps.Point(0,0), 2893 anchor: new google.maps.Point(16,49 ) 2894 }; 2895 } 2896 return image; 2897} 2898 2899 2900///////////////////////////////////////////////////////////////////////////////////////////////// 2901//// Circle label 2902///////////////////////////////////////////////////////////////////////////////////////////////// 2903 2904function Label(opt_options) { 2905 "use strict"; 2906 // Initialization 2907 this.setValues(opt_options); 2908 2909 2910 // Label specific 2911 var span = this.span_ = document.createElement('span'); 2912 span.style.cssText = 'position: relative; left: -50%; top: 8px; ' + 2913 'white-space: nowrap; ' + 2914 'padding: 2px; background-color: white;opacity:0.7'; 2915 2916 2917 var div = this.div_ = document.createElement('div'); 2918 div.appendChild(span); 2919 div.style.cssText = 'position: absolute; display: none'; 2920} 2921 2922 2923if (typeof google !== 'undefined') { 2924 Label.prototype = new google.maps.OverlayView; 2925} 2926 2927// Implement onAdd 2928Label.prototype.onAdd = function() { 2929 "use strict"; 2930 var pane = this.getPanes().overlayImage; 2931 pane.appendChild(this.div_); 2932 2933 2934 // Ensures the label is redrawn if the text or position is changed. 2935 var me = this; 2936 this.listeners_ = [ 2937 google.maps.event.addListener(this, 'position_changed', function() { me.draw(); }), 2938 google.maps.event.addListener(this, 'visible_changed', function() { me.draw(); }), 2939 google.maps.event.addListener(this, 'clickable_changed', function() { me.draw(); }), 2940 google.maps.event.addListener(this, 'text_changed', function() { me.draw(); }), 2941 google.maps.event.addListener(this, 'zindex_changed', function() { me.draw(); }), 2942 google.maps.event.addDomListener(this.div_, 'click', function() { 2943 if (me.get('clickable')) { 2944 google.maps.event.trigger(me, 'click'); 2945 } 2946 }) 2947 ]; 2948}; 2949 2950 2951// Implement onRemove 2952Label.prototype.onRemove = function() { 2953 "use strict"; 2954 this.div_.parentNode.removeChild(this.div_); 2955 2956 2957 // Label is removed from the map, stop updating its position/text. 2958 for (var i = 0, I = this.listeners_.length; i < I; ++i) { 2959 google.maps.event.removeListener(this.listeners_[i]); 2960 } 2961}; 2962 2963 2964// Implement draw 2965Label.prototype.draw = function() { 2966 "use strict"; 2967 var projection = this.getProjection(); 2968 var position = projection.fromLatLngToDivPixel(this.get('position')); 2969 2970 2971 var div = this.div_; 2972 div.style.left = position.x + 'px'; 2973 div.style.top = position.y + 'px'; 2974 2975 2976 var visible = this.get('visible'); 2977 div.style.display = visible ? 'block' : 'none'; 2978 2979 2980 var clickable = this.get('clickable'); 2981 this.span_.style.cursor = clickable ? 'pointer' : ''; 2982 2983 2984 var zIndex = this.get('zIndex'); 2985 div.style.zIndex = zIndex; 2986 2987 2988 this.span_.innerHTML = this.get('text').toString(); 2989}; 2990 2991 2992 2993///////////////////////////////////////////////////////////////////////////////////////////////// 2994/// close advanced search 2995///////////////////////////////////////////////////////////////////////////////////////////////// 2996function wpestate_close_adv_search(){ 2997 "use strict"; 2998} 2999
3000////////////////////////////////////////////////////////////////////// 3001/// show advanced search 3002////////////////////////////////////////////////////////////////////// 3003 3004 3005function wpestate_new_show_advanced_search(){ 3006 "use strict"; 3007 jQuery("#search_wrapper").removeClass("hidden"); 3008} 3009 3010function wpestate_new_hide_advanced_search(){ 3011 "use strict"; 3012 if( mapfunctions_vars.show_adv_search ==='no' ){ 3013 jQuery("#search_wrapper").addClass("hidden"); 3014 } 3015 3016} 3017function is_marker_in_cluster (marker, cluster) { 3018 3019 var length = cluster.length; 3020 3021 for(var j = 0; j < length; j++) { 3022 3023 if ( cluster[j].idul == marker ) { 3024 return true; 3025 } 3026 } 3027 return false; 3028} 3029 3030 3031function wpestate_hover_action_pin(listing_id){ 3032 "use strict"; 3033 for (var i = 0; i < gmarkers.length; i++) { 3034 if ( parseInt( gmarkers[i].idul,10) === parseInt( listing_id,10) ){ 3035 if(wp_estate_kind_of_map===1){ 3036 3037 google.maps.event.trigger(gmarkers[i], 'click'); 3038 if(mapfunctions_vars.useprice !== 'yes'){ 3039 pin_hover_storage=gmarkers[i].icon; 3040 gmarkers[i].setIcon(wpestate_custompinhover()); 3041 }else{ 3042 gmarkers[i].addHoverClass(); 3043 } 3044 3045 3046 3047 }else if(wp_estate_kind_of_map===2){ 3048 wpestate_hover_action_pin_leaflet(listing_id,i); 3049 } 3050 3051 } 3052 } 3053} 3054 3055 3056 3057 3058function wpestate_hover_action_pin_leaflet(listing_id,in_array_id){ 3059 const marker = gmarkers[in_array_id]; 3060 map.panTo(marker.getLatLng()); 3061 markers_cluster.refreshClusters(); 3062 lealet_map_move_on_hover = 1; 3063 3064 if (!marker._icon) { 3065 marker.__parent.spiderfy(); 3066 } 3067 3068 marker.togglePopup(); 3069 3070 if (mapfunctions_vars.useprice === 'yes') { 3071 L.DomUtil.addClass(marker._icon, 'openstreet_price_marker_on_click_parent'); 3072 } else { 3073 marker.setIcon(wpestate_custompinhover()); 3074 } 3075 3076 map.invalidateSize(); markers_cluster.refreshClusters(); 3077} 3078//unspiderfy 3079 3080 3081 3082 3083function wpestate_return_hover_action_pin_leaflet(listing_id,in_array_id){ 3084 const marker = gmarkers[in_array_id]; 3085 3086 marker.togglePopup(); 3087 lealet_map_move_on_hover = 0; 3088 3089 if (!marker._icon) { 3090 marker.__parent.unspiderfy(); 3091 } 3092 3093 if (mapfunctions_vars.useprice !== 'yes') { 3094 const markerImage = { 3095 iconUrl: wprentals_custompin_leaflet(marker.pin), 3096 iconSize: [44, 50], 3097 iconAnchor: [20, 50], 3098 popupAnchor: [1, -50] 3099 }; 3100 marker.setIcon(L.icon(markerImage)); 3101 } else { 3102 L.DomUtil.removeClass(marker._icon, 'openstreet_price_marker_on_click_parent'); 3103 } 3104 3105 map.invalidateSize(); 3106 markers_cluster.refreshClusters(); 3107 3108} 3109 3110 3111 3112 3113 3114function wpestate_return_hover_action_pin(listing_id){ 3115 3116 "use strict"; 3117 for (var i = 0; i < gmarkers.length; i++) { 3118 if ( parseInt( gmarkers[i].idul,10) === parseInt( listing_id,10) ){ 3119 3120 if(wp_estate_kind_of_map===1){ 3121 if (parseInt(gmarkers[i].idul, 10) === parseInt(listing_id, 10)) { 3122 3123 infoBox.close(); 3124 if(mapfunctions_vars.useprice !== 'yes'){ 3125 gmarkers[i].setIcon(pin_hover_storage); 3126 }else{ 3127 gmarkers[i].removeHoverClass(); 3128 } 3129 } 3130 } else if(wp_estate_kind_of_map===2){ 3131 wpestate_return_hover_action_pin_leaflet(listing_id,i); 3132 3133 } 3134 3135 3136 } 3137 } 3138 3139} 3140 3141 3142function wpestate_custompinhover(){ 3143 "use strict"; 3144 3145 var custom_img,image; 3146 var extension=''; 3147 var ratio = jQuery(window).dense('devicePixelRatio'); 3148 3149 if(ratio>1){ 3150 extension='_2x'; 3151 } 3152 custom_img= mapfunctions_vars.path+'/hover'+extension+'.png'; 3153 3154 if(wp_estate_kind_of_map===2){ 3155 if(ratio>1){ 3156 3157 var markerImage = L.icon({ 3158 iconUrl: custom_img, 3159 iconSize: [90, 90], 3160 iconAnchor: [40, 90], 3161 popupAnchor: [1, -90] 3162 }); 3163 }else{ 3164 var markerImage = L.icon({ 3165 iconUrl: custom_img, 3166 iconSize: [44, 50], 3167 iconAnchor: [20, 50],
3168 popupAnchor: [1, -50] 3169 }); 3170 } 3171 return markerImage; 3172 3173 } 3174 3175 3176 if(ratio>1){ 3177 3178 image = { 3179 url: custom_img, 3180 size : new google.maps.Size(132, 144), 3181 scaledSize : new google.maps.Size(66, 72), 3182 origin: new google.maps.Point(0,0), 3183 anchor: new google.maps.Point(25,72 ) 3184 }; 3185 3186 }else{ 3187 image = { 3188 url: custom_img, 3189 size: new google.maps.Size(90, 90), 3190 origin: new google.maps.Point(0,0), 3191 anchor: new google.maps.Point(25,72 ) 3192 }; 3193 } 3194 3195 3196 return image; 3197} 3198 3199 3200 3201 3202function wpestate_map_callback(callback){ 3203 "use strict"; 3204 callback(1); 3205} 3206 3207/* 3208* 3209* return google poi types for selected poi 3210* 3211*/ 3212 3213 function wpestate_return_poi_values (poi_type){ 3214 var show_poi; 3215 switch(poi_type) { 3216 case 'transport': 3217 show_poi = ['bus_station', 'airport', 'train_station', 'subway_station']; 3218 break; 3219 case 'supermarkets': 3220 show_poi = ['grocery_or_supermarket', 'shopping_mall']; 3221 break; 3222 case 'schools': 3223 show_poi = ['school', 'university']; 3224 break; 3225 case 'restaurant': 3226 show_poi=['restaurant']; 3227 break; 3228 case 'pharma': 3229 show_poi = ['pharmacy']; 3230 break; 3231 case 'hospitals': 3232 show_poi = ['hospital']; 3233 break; 3234 } 3235 return show_poi; 3236}; 3237 3238 3239/* 3240* 3241* add poi markers on the map 3242* 3243*/ 3244 3245function wpestate_googlemap_display_poi (results, status,map_for_poi,poi_marker_array) { 3246 if ( google.maps.places.PlacesServiceStatus.OK == status ) { 3247 for (var i = 0; i < results.length; i++) { 3248 poi_marker = wpestate_create_poi_marker(results[i],map_for_poi); 3249 poi_marker_array.push(poi_marker); 3250 } 3251 } 3252 return poi_marker_array; 3253}; 3254 3255/* 3256* 3257* create the poi markers 3258* 3259*/ 3260 3261function wpestate_create_poi_marker (place,map_for_poi){ 3262 var marker = new google.maps.Marker({ 3263 map: map_for_poi, 3264 position: place.geometry.location, 3265 show_poi:poi_type, 3266 icon: mapfunctions_vars.path+'/poi/'+poi_type+'.png' 3267 }); 3268 3269 3270 var boxText = document.createElement("div"); 3271 var infobox_poi = new InfoBox({ 3272 content: boxText, 3273 boxClass:"estate_poi_box", 3274 pixelOffset: new google.maps.Size(-30, -70), 3275 zIndex: null, 3276 maxWidth: 275, 3277 closeBoxMargin: "-13px 0px 0px 0px", 3278 closeBoxURL: "", 3279 infoBoxClearance: new google.maps.Size(1, 1), 3280 pane: "floatPane", 3281 enableEventPropagation: false 3282 }); 3283 3284 google.maps.event.addListener(marker, 'mouseover', function(event) { 3285 infobox_poi.setContent(place.name); 3286 infobox_poi.open(map_for_poi, this); 3287 }); 3288 3289 google.maps.event.addListener(marker, 'mouseout', function(event) { 3290 if( infobox_poi!== null){ 3291 infobox_poi.close(); 3292 } 3293 }); 3294 return marker; 3295}; 3296 3297 3298/* 3299* 3300* initialize poi values 3301* 3302*/ 3303 3304function wpestate_initialize_poi ( map_for_poi,what,elementId){ 3305 "use strict"; 3306 3307 var poi_marker_array=[]; 3308 3309 3310 3311 3312 if( parseInt(mapbase_vars.wp_estate_kind_of_map) == 2 || typeof(google.maps.places)==='undefined'){ 3313 return; 3314 } 3315 var poi_service = new google.maps.places.PlacesService( map_for_poi ); 3316 var already_serviced = ''; 3317 var show_poi = ''; 3318 var map_bounds = map_for_poi.getBounds(); 3319 var selector = '.google_poi'; 3320 if(what==2){ 3321 selector = '.google_poish'; 3322 } 3323 3324 3325 3326 var elementWrapper = jQuery('#'+elementId).parent(); 3327 elementWrapper.find(selector).on( 'click', function(event) { 3328 event.stopPropagation(); 3329 poi_type = jQuery(this).attr('data-value'); 3330 var position = map_for_poi.getCenter(); 3331 var show_poi = wpestate_return_poi_values(poi_type); 3332 3333 3334 if( jQuery(this).hasClass('poi_active')){ 3335 wpestate_show_hide_poi(poi_type,'hide',poi_marker_array); 3336 }else{ 3337 3338 already_serviced = wpestate_show_hide_poi(poi_type,'show', poi_marker_array); 3339 if(already_serviced===1){ 3340 3341 var request = { 3342 location: position, 3343 types: show_poi, 3344 bounds: map_bounds, 3345 radius: 12500, 3346 }; 3347 poi_service.nearbySearch( request,function (results, status){ 3348 poi_marker_array=wpestate_googlemap_display_poi(results, status,map_for_poi, poi_marker_array); 3349 }); 3350 } 3351 } 3352 jQuery(this).toggleClass('poi_active'); 3353 }); 3354 3355}; 3356 3357 3358/* 3359* 3360*hide-show poi 3361* 3362*/ 3363 3364 3365function wpestate_show_hide_poi (poi_type,showhide,poi_marker_array){ 3366 var is_hiding=1; 3367 3368 3369 for (var i = 0; i < poi_marker_array.length; i++) { 3370 if (poi_marker_array[i].show_poi === poi_type){ 3371 if(showhide==='hide'){ 3372 poi_marker_array[i].setVisible(false); 3373 }else{ 3374 poi_marker_array[i].setVisible(true); 3375 is_hiding=0; 3376 } 3377 } 3378 } 3379 3380 return is_hiding; 3381}; 3382 3383 3384 3385 3386/* 3387* 3388* 3389* 3390*/ 3391 3392function wpestate_geolocation_marker (place_lat, place_lng){ 3393 "use strict"; 3394 3395 var place_radius; 3396 var read_radius =parseInt( jQuery('#geolocation_radius').val(),10 ); 3397 3398 if ( isNaN(read_radius) ){ 3399 read_radius = parseInt( mapfunctions_vars.geolocation_radius,10); 3400 } 3401 3402 if(control_vars.geo_radius_measure==='miles'){ 3403 place_radius =parseInt( read_radius*1609.34) ; 3404 }else{ 3405 place_radius =parseInt( read_radius*1000 ); 3406 } 3407 3408 if( wp_estate_kind_of_map===1){ 3409 var place_position=new google.maps.LatLng(place_lat, place_lng); 3410 map.setCenter(place_position); 3411 3412 if(placeCircle!=''){ 3413 placeCircle.setMap(null); 3414 placeCircle=''; 3415 } 3416 3417 /*var marker = new google.maps.Marker({ 3418 map: map, 3419 position: place_position, 3420 icon: mapfunctions_vars.path+'/poi/location.png' 3421 }); 3422 */ 3423 3424 var populationOptions = { 3425 strokeColor: '#67cfd8', 3426 strokeOpacity: 0.6, 3427 strokeWeight: 1, 3428 fillColor: '#1CA8DD', 3429 fillOpacity: 0.2, 3430 map: map, 3431 center: place_position, 3432 radius: parseInt(place_radius,10) 3433 }; 3434 placeCircle = new google.maps.Circle(populationOptions); 3435 map.fitBounds(placeCircle.getBounds()); 3436 }else{ 3437 var markerCenter = L.latLng(place_lat, place_lng ); 3438 map.panTo(markerCenter); 3439 3440 var markerImage = { 3441 iconUrl: mapfunctions_vars.path+'/poi/location.png', 3442 iconSize: [28, 38], 3443 iconAnchor: [10, 19], 3444 popupAnchor: [1, -18] 3445 }; 3446 var markerOptions = { 3447 riseOnHover: true 3448 }; 3449 3450 if(circleLayer!=='' && map.hasLayer(circleLayer)){ 3451 map.removeLayer(circleLayer); 3452 } 3453 circleLayer=L.featureGroup(); 3454 markerOptions.icon = L.icon( markerImage ); 3455 L.marker( markerCenter, markerOptions ).addTo( map ); 3456 placeCircle= L.circle( markerCenter, parseInt(place_radius,10) ).addTo(circleLayer); 3457 3458 map.addLayer(circleLayer); 3459 map.fitBounds(placeCircle.getBounds()); 3460 } 3461 3462 3463 3464} 3465 3466 3467function wpestate_makeSafeForCSS(name) { 3468 return name.replace(/[^a-z0-9]/g, function(s) {
3469 var c = s.charCodeAt(0); 3470 if (c == 32) return '-'; 3471 if (c >= 65 && c <= 90) return s.toLowerCase(); 3472 return ('000' + c.toString(16)).slice(-4); 3473 }); 3474} 3475 3476 3477
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.