1/** 2 * This jQuery plugin displays map and it's components. 3 * @author Flipper Code (hello *at* flippercode *dot* com) 4 * @version 1.0 5 */ 6(function($, window, document, undefined) { 7 8 9 10 function Map_Control(options) { 11 this.options = options; 12 } 13 Map_Control.prototype.create_element = function(controlDiv, map, html_element) { 14 15 // Set CSS for the control border 16 var controlUI = document.createElement('div'); 17 controlUI.style.backgroundColor = '#fff'; 18 controlUI.style.border = '2px solid #fff'; 19 controlUI.style.borderRadius = '3px'; 20 controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)'; 21 controlUI.style.cursor = 'pointer'; 22 controlUI.style.marginBottom = '22px'; 23 controlUI.style.textAlign = 'center'; 24 controlUI.title = 'Click to recenter the map'; 25 controlDiv.appendChild(controlUI); 26 27 // Set CSS for the control interior 28 var controlText = document.createElement('div'); 29 controlText.style.color = 'rgb(25,25,25)'; 30 controlText.style.fontFamily = 'Roboto,Arial,sans-serif'; 31 controlText.style.fontSize = '16px'; 32 controlText.style.lineHeight = '38px'; 33 controlText.style.paddingLeft = '5px'; 34 controlText.style.paddingRight = '5px'; 35 controlText.innerHTML = html_element; 36 controlUI.appendChild(controlText); 37 google.maps.event.addDomListener(controlUI, 'click', function() { 38 map.setCenter(new google.maps.LatLng(41.85, -87.65)); 39 }); 40 41 }; 42 43 function overlay_generator(tileSize, options) { 44 this.tileSize = tileSize; 45 this.overlay_options = options; 46 } 47 48 overlay_generator.prototype.getTile = function(coord, zoom, ownerDocument) { 49 var div = ownerDocument.createElement("div"); 50 div.innerHTML = coord; 51 div.style.width = "200px"; 52 div.style.height = "300px"; 53 div.style.fontSize = this.overlay_options.font_size + "px"; 54 div.style.borderStyle = this.overlay_options.border_style; 55 div.style.borderWidth = this.overlay_options.border_width + "px"; 56 div.style.borderColor = this.overlay_options.border_color; 57 return div; 58 }; 59 60 function GoogleMaps(element, map_data) { 61 var options; 62 this.element = element; 63 this.map_data = $.extend({}, {}, map_data); 64 options = this.map_data.map_options; 65 this.settings = $.extend({ 66 "zoom": "5", 67 "map_type_id": "ROADMAP", 68 "scroll_wheel": true, 69 "map_visual_refresh": false, 70 "full_screen_control": false, 71 "full_screen_control_position": "BOTTOM_RIGHT", 72 "zoom_control": true, 73 "zoom_control_style": "SMALL", 74 "zoom_control_position": "TOP_LEFT", 75 "map_type_control": true, 76 "map_type_control_style": "HORIZONTAL_BAR", 77 "map_type_control_position": "RIGHT_TOP", 78 "scale_control": true, 79 "street_view_control": true, 80 "street_view_control_position": "TOP_LEFT", 81 "overview_map_control": true, 82 "center_lat": "40.6153983", 83 "center_lng": "-74.2535216", 84 "draggable": true 85 }, {}, options); 86 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 87 88 var suppress_markers = false; 89 if (typeof this.map_data.map_tabs != 'undefined' && typeof this.map_data.map_tabs.direction_tab != 'undefined') { 90 suppress_markers = this.map_data.map_tabs.direction_tab.suppress_markers; 91 } 92 this.directionsService = new google.maps.DirectionsService(); 93 this.directionsDisplay = new google.maps.DirectionsRenderer({ 94 suppressMarkers: suppress_markers, 95 }); 96 this.drawingmanager = {}; 97 this.geocoder = new google.maps.Geocoder(); 98 this.places = []; 99 this.show_places = []; 100 this.categories = {}; 101 this.tabs = []; 102 this.all_shapes = []; 103 this.wpgmp_polylines = []; 104 this.wpgmp_polygons = []; 105 this.wpgmp_circles = []; 106 this.wpgmp_shape_events = []; 107 this.wpgmp_rectangles = []; 108 this.per_page_value = 0; 109 this.current_amenities = []; 110 this.route_directions = []; 111 this.search_area = ''; 112 this.markerClusterer = null; 113 this.init(); 114 } 115 116 GoogleMaps.prototype = { 117 118 init: function() { 119 var map_obj = this; 120 121 var center = new google.maps.LatLng(map_obj.settings.center_lat, map_obj.settings.center_lng); 122 map_obj.map = new google.maps.Map(map_obj.element, { 123 zoom: parseInt(map_obj.settings.zoom), 124 center: center, 125 disableDoubleClickZoom: (map_obj.settings.scroll_wheel != 'false'), 126 scrollwheel: (map_obj.settings.scroll_wheel != 'false'), 127 zoomControl: (map_obj.settings.zoom_control === true), 128 fullscreenControl: (map_obj.settings.full_screen_control === true), 129 fullscreenControlOptions: { 130 position: eval("google.maps.ControlPosition." + map_obj.settings.full_screen_control_position) 131 }, 132 zoomControlOptions: { 133 style: eval("google.maps.ZoomControlStyle." + map_obj.settings.zoom_control_style), 134 position: eval("google.maps.ControlPosition." + map_obj.settings.zoom_control_position) 135 }, 136 mapTypeControl: (map_obj.settings.map_type_control == true), 137 mapTypeControlOptions: { 138 style: eval("google.maps.MapTypeControlStyle." + map_obj.settings.map_type_control_style), 139 position: eval("google.maps.ControlPosition." + map_obj.settings.map_type_control_position) 140 }, 141 scaleControl: (map_obj.settings.scale_control == true), 142 streetViewControl: (map_obj.settings.street_view_control == true), 143 streetViewControlOptions: { 144 position: eval("google.maps.ControlPosition." + map_obj.settings.street_view_control_position) 145 }, 146 overviewMapControl: (map_obj.settings.overview_map_control == true), 147 overviewMapControlOptions: { 148 opened: map_obj.settings.overview_map_control 149 }, 150 draggable: map_obj.settings.draggable, 151 mapTypeId: eval("google.maps.MapTypeId." + map_obj.settings.map_type_id
151), 152 styles: eval(map_obj.map_data.styles) 153 }); 154 155 map_obj.map_loaded(); 156 map_obj.responsive_map(); 157 map_obj.create_markers(); 158 map_obj.display_markers(); 159 160 if (typeof map_obj.map_data.street_view != 'undefined') { 161 map_obj.set_streetview(center); 162 } 163 164 if (typeof map_obj.map_data.weather_layer != 'undefined') { 165 map_obj.set_weather_layer(); 166 } 167 168 if (typeof map_obj.map_data.bicyle_layer != 'undefined') { 169 map_obj.set_bicyle_layer(); 170 } 171 172 if (typeof map_obj.map_data.traffic_layer != 'undefined') { 173 map_obj.set_traffic_layer(); 174 } 175 176 if (typeof map_obj.map_data.transit_layer != 'undefined') { 177 map_obj.set_transit_layer(); 178 } 179 180 if (typeof map_obj.map_data.panoramio_layer != 'undefined') { 181 map_obj.set_panoramic_layer(); 182 } 183 184 if (typeof map_obj.map_data.overlay_setting != 'undefined') { 185 map_obj.set_overlay(); 186 } 187 188 if (map_obj.settings.display_45_imagery == '45') { 189 map_obj.set_45_imagery(); 190 } 191 192 if (typeof map_obj.map_data.map_visual_refresh === true) { 193 map_obj.set_visual_refresh(); 194 } 195 196 if (typeof map_obj.map_data.marker_cluster != 'undefined') { 197 map_obj.set_marker_cluster(); 198 } 199 200 if (typeof map_obj.map_data.panning_control != 'undefined') { 201 map_obj.set_panning_control(); 202 } 203 204 if (typeof map_obj.map_data.kml_layer != 'undefined') { 205 map_obj.set_kml_layer(); 206 } 207 208 if (typeof map_obj.map_data.fusion_layer != 'undefined') { 209 map_obj.set_fusion_layer(); 210 } 211 212 if (typeof map_obj.map_data.shapes != 'undefined') { 213 214 if (typeof map_obj.map_data.shapes.shape != 'undefined') { 215 map_obj.opened_info = new google.maps.InfoWindow(); 216 if (typeof map_obj.map_data.shapes.shape.polygons != 'undefined') 217 map_obj.create_polygon(); 218 219 if (typeof map_obj.map_data.shapes.shape.polylines != 'undefined') 220 map_obj.create_polyline(); 221 222 if (typeof map_obj.map_data.shapes.shape.circles != 'undefined') 223 map_obj.create_circle(); 224 225 if (typeof map_obj.map_data.shapes.shape.rectangles != 'undefined') 226 map_obj.create_rectangle(); 227 } 228 } 229 230 if (typeof map_obj.map_data.routes != 'undefined') { 231 map_obj.create_routes(); 232 } 233 234 if (typeof map_obj.map_data.listing != 'undefined') { 235 if (typeof map_obj.map_data.listing.default_sorting != 'undefined') { 236 map_obj.sorting(map_obj.map_data.listing.default_sorting.orderby, map_obj.map_data.listing.default_sorting.inorder); 237 } 238 } 239 240 if (typeof map_obj.map_data.listing != 'undefined') { 241 242 map_obj.display_filters_listing(); 243 244 $.each(map_obj.map_data.listing.filters, function(key, filter) { 245 246 $(map_obj.container).find('select[name="' + filter + '"]').on('change', function() { 247 map_obj.update_filters(); 248 }); 249 250 }); 251 252 $(map_obj.container).find('select[name="map_sorting"]').on('change', function() { 253 254 var order_data = $(this).val().split("_"); 255 256 if (order_data[0] !== '' && order_data[1] !== '') { 257 map_obj.sorting(order_data[0], order_data[1]); 258 map_obj.update_places_listing(); 259 } 260 261 }); 262 263 $(map_obj.container).find('select[name="map_radius"]').on('change', function() { 264 265 var search_data = $(map_obj.container).find('input[name="wpgmp_search_input"]').val(); 266 if (search_data.length >= 2 && $(this).val() != '') { 267 map_obj.geocoder.geocode({ 268 "address": search_data 269 }, function(results, status) { 270 271 if (status == google.maps.GeocoderStatus.OK) { 272 map_obj.search_area = results[0].geometry.location; 273 map_obj.update_filters(); 274 } 275 276 }); 277 } else { 278 map_obj.search_area = ''; 279 map_obj.update_filters(); 280 } 281 282 283 }); 284 285 $(map_obj.container).find('select[name="map_perpage_location_sorting"]').on('change', function() { 286 287 map_obj.per_page_value = $(this).val(); 288 map_obj.update_filters(); 289 290 }); 291 292 $(map_obj.container).find('input[name="wpgmp_search_input"]').on('keyup', function() { 293 294 $(map_obj.container).find('select[name="map_radiu
294s"]').val(''); 295 map_obj.search_area = ''; 296 map_obj.update_filters(); 297 298 }); 299 300 $(map_obj.container).find(".location_pagination" + map_obj.map_data.map_property.map_id).pagination(map_obj.show_places.length, { 301 callback: map_obj.display_places_listing, 302 map_data: map_obj, 303 items_per_page: map_obj.map_data.listing.pagination.listing_per_page, 304 prev_text: wpgmp_local.prev, 305 next_text: wpgmp_local.next 306 }); 307 308 $(map_obj.container).find('.wpgmp_locations').responsiveEqualHeightGrid(); 309 } 310 311 $('.wpgmp-shape-delete').click(function() { 312 313 map_obj.deleteSelectedShape(); 314 $('.hiderow').hide(); 315 }); 316 317 $('select[name="shape_stroke_opacity"]').change(function() { 318 map_obj.set_shapes_options(map_obj.selectedShape); 319 }); 320 $('select[name="shape_stroke_weight"]').change(function() { 321 map_obj.set_shapes_options(map_obj.selectedShape); 322 }); 323 $('select[name="shape_stroke_color"]').change(function() { 324 map_obj.set_shapes_options(map_obj.selectedShape); 325 }); 326 $('select[name="shape_fill_opacity"]').change(function() { 327 map_obj.set_shapes_options(map_obj.selectedShape); 328 }); 329 $('select[name="shape_fill_color"]').change(function() { 330 map_obj.set_shapes_options(map_obj.selectedShape); 331 }); 332 $('input[name="shape_click_url"]').change(function() { 333 map_obj.set_shapes_options(map_obj.selectedShape); 334 }); 335 $('textarea[name="shape_click_message"]').blur(function() { 336 map_obj.set_shapes_options(map_obj.selectedShape); 337 }); 338 339 $("textarea[name='shape_path']").blur(function() { 340 var cordinates = $(this).val().split(' '); 341 if (cordinates.length == 1) { 342 cordinates = $(this).val().split("\n"); 343 } 344 var path = []; 345 $.each(cordinates, function(ind, cordinate) { 346 var latlng = cordinate.split(','); 347 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 348 }); 349 map_obj.selectedShape.setPath(path); 350 }); 351 352 $("input[name='shape_radius']").blur(function() { 353 var radius = parseFloat($(this).val()); 354 map_obj.selectedShape.setRadius(radius); 355 }); 356 357 $("input[name='shape_center']").blur(function() { 358 var latlng = $(this).val().split(','); 359 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 360 }); 361 362 $("input[name='shape_northeast']").blur(function() { 363 var ea = $(this).val().split(','); 364 var sw = $("input[name='shape_southwest']").val().split(','); 365 366 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 367 }); 368 369 $("input[name='shape_southwest']").blur(function() { 370 var sw = $(this).val().split(','); 371 var ea = $("input[name='shape_northeast']").val().split(','); 372 373 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 374 }); 375 376 $("input[name='shape_center']").blur(function() { 377 var latlng = $(this).val().split(','); 378 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 379 }); 380 381 $('input[name="wpgmp_save_drawing"]').click(function() { 382 383 var all_shapes_cordinate = []; 384
385 all_shapes_cordinate.push('polylines=' + map_obj.wpgmp_save_polylines().join('::')); 386 all_shapes_cordinate.push('polygons=' + map_obj.wpgmp_save_polygons().join('::')); 387 all_shapes_cordinate.push('circles=' + map_obj.wpgmp_save_circles().join('::')); 388 all_shapes_cordinate.push('rectangles=' + map_obj.wpgmp_save_rectangles().join('::')); 389 390 map_obj.wpgmp_save_shapes(all_shapes_cordinate); 391 392 }); 393 if (typeof map_obj.map_data.shapes != 'undefined') { 394 if (map_obj.map_data.shapes.drawing_editable === true) { 395 $('.wpgmp-overview .color').wpColorPicker({ 396 change: function(event, ui) { 397 map_obj.set_shapes_options(map_obj.selectedShape); 398 } 399 }); 400 } 401 } 402 403 404 405 if (typeof map_obj.map_data.map_tabs != 'undefined') { 406 this.map_widgets(); 407 408 $(map_obj.element).find(".wpgmp_toggle_main_container").find("div[id^='wpgmp_tab_']").css("display", "none"); 409 410 if (map_obj.settings.infowindow_filter_only === false) { 411 412 $(map_obj.element).find(".wpgmp_specific_category_item").attr("checked", true); 413 414 $(map_obj.element).find(".wpgmp_specific_location_item").attr("checked", true); 415 416 } 417 418 if (this.map_data.map_tabs.category_tab.select_all === true) { 419 420 $(map_obj.element).find('input[name="wpgmp_select_all"]').click(function() { 421 if ($(this).is(":checked")) { 422 $(map_obj.element).find(".wpgmp_specific_category_item").attr("checked", true); 423 } else { 424 $(map_obj.element).find(".wpgmp_specific_category_item").attr("checked", false); 425 } 426 map_obj.update_filters(); 427 }); 428 } 429 430 $(map_obj.element).find(".wpgmp_toggle_container").click(function() { 431 432 $(map_obj.element).find(".wpgmp_toggle_main_container").slideToggle("slow"); 433 434 if ($(this).text() == wpgmp_local.hide) { 435 $(this).text(wpgmp_local.show); 436 } else { 437 $(this).text(wpgmp_local.hide); 438 } 439 440 }); 441 442 if (map_obj.map_data.map_tabs.hide_tabs_default === true) { 443 $(map_obj.element).find(".wpgmp_toggle_container").trigger('click'); 444 } 445 446 $(map_obj.element).find(".wpgmp_specific_route_item").attr("checked", true); 447 448 $(map_obj.element).find(".wpgmp_toggle_main_container").find("div[id^='wpgmp_tab_']").first().css("display", "block"); 449 450 $(map_obj.element).on('click', "li[class^='wpgmp-tab-'] a", function() { 451 452 $(map_obj.element).find("li[class^='wpgmp-tab-'] a").removeClass('active'); 453 454 $(this).addClass('active'); 455 456 $(map_obj.element).find(".wpgmp_toggle_main_container").find("div[id^='wpgmp_tab_']").css("display", "none"); 457 458 $(map_obj.element).find(".wpgmp_toggle_main_container").find("#wpgmp_tab_" + $(this).parent().attr('rel')).css("display", "block"); 459 460 }); 461 $(map_obj.element).find(".wpgmp_toggle_main_container").on('change', ".wpgmp_specific_category_item", function() { 462 //uncheck all locations 463 if ($(this).is(":checked") === false) 464 $(this).parent().find('.wpgmp_specific_location_item').attr('checked', false); 465 else 466 $(this).parent().find('.wpgmp_specific_location_item').attr('checked', true); 467 468 map_obj.update_filters(); 469 }); 470 471 472 $(map_obj.element).find(".wpgmp_toggle_main_container").on('change', ".wpgmp_specific_route_item", function() { 473 //uncheck all locations 474 var selected_route = map_obj.route_directions[$(this).val()]; 475 if ($(this).is(":checked") === false) { 476 selected_route.setMap(null); 477 } else {
478 selected_route.setMap(map_obj.map); 479 } 480 481 }); 482 483 $(map_obj.element).find(".wpgmp_toggle_main_container").on('change', ".wpgmp_specific_location_item", function() { 484 map_obj.update_filters(); 485 }); 486 487 //directions tabs 488 if (this.map_data.map_tabs.direction_tab.dir_tab === true) { 489 $(this.element).find(".wpgmp_find_direction").click(function() { 490 491 var start = $(map_obj.element).find('.start_point'); 492 var end = $(map_obj.element).find('.end_point'); 493 var travel_mode = $(map_obj.element).find('select[name="travel_mode"]').val(); 494 var travel_unit = $(map_obj.element).find('select[name="travel_unit"]').val(); 495 var direction_panel = $(map_obj.element).find('.directions-panel'); 496 var current_address = ''; 497 if ($(start).val() === "") { 498 $(start).focus(); 499 return false; 500 } 501 502 if ($(end).val() === "") { 503 $(end).focus(); 504 return false; 505 } 506 507 var options = { 508 "start": start.val(), 509 "end": end.val(), 510 "mode": travel_mode, 511 "unit": travel_unit, 512 "direction_panel": direction_panel[0], 513 "map": map_obj.map 514 }; 515 console.log(options); 516 map_obj.find_direction(options); 517 518 }); 519 } 520 521 $(this.element).find(".wpgmp_find_nearby_button").click(function() { 522 var target = $(this).parent().parent(); 523 var lat = $(target).find(".wpgmp_auto_suggest").data('latitude'); 524 var lon = $(target).find(".wpgmp_auto_suggest").data('longitude'); 525 var radius = $(map_obj.element).find("input[name='wpgmp_radius']").val(); 526 var dim = $(map_obj.element).find("select[name='wpgmp_route_dimension']").val(); 527 var amenities = $(map_obj.element).find('input[name^="wpgmp_place_types"]:checked'); 528 var divide_by = 1.60934; 529 var service; 530 if (dim == 'miles') { 531 divide_by = 1.60934; 532 } else { 533 divide_by = 1; 534 } 535 var circle_radius_meters = parseInt(radius) * divide_by * 1000; 536 // Now draw a circle. 537 if (amenities.length > 0) { 538 //remove all previous amenities 539 if (map_obj.current_amenities.length > 0) { 540 $.each(map_obj.current_amenities, function(am, amenity) { 541 amenity.marker.setMap(null); 542 }); 543 } 544 map_obj.amenity_infowindow = new google.maps.InfoWindow(); 545 var place_types = []; 546 $.each(amenities, function(index, amenity) { 547 place_types.push($(amenity).val()); 548 }); 549 var request = { 550 location: new google.maps.LatLng(lat, lon), 551 radius: circle_radius_meters, 552 types: place_types 553 }; 554 service = new google.maps.places.PlacesService(map_obj.map); 555 service.nearbySearch(request, function(results, status) { 556 if (status == google.maps.places.PlacesServiceStatus.OK) { 557 for (var i = 0; i < results.length; i++) { 558 map_obj.createMarker(results[i]); 559 } 560 } 561 }); 562 } 563 564 map_obj.map.setCenter(new google.maps.LatLng(lat, lon)); 565 566 if (map_obj.map_data.map_tabs.nearby_tab.show_nearby_circle === true) { 567 568 if (typeof map_obj.set_nearbycenter_circle != 'undefined') { 569 map_obj.set_nearbycenter_circle.setMap(null); 570 } 571 //this.map_data.map_tabs.nearby_tab.near_tab 572 // 573 map_obj.set_nearbycenter_circle = new google.maps.Circle({ 574 map: map_obj.map, 575 fillColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillcolor, 576 fillOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillopacity, 577 strokeColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokecolor, 578 strokeOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeopacity, 579 strokeWeight: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeweight, 580 center: new google.maps.LatLng(lat, lon), 581 radius: circle_radius_meters, 582 }); 583 map_obj.map.setZoom(parseInt(map_obj.map_data.map_tabs.nearby_tab.nearby_circle_zoom)); 584 } 585 }), 586 587 $(this.element).find(".wpgmp_mcurrent_loction").click(function() { 588 var this_current = this; 589 map_obj.get_current_location(function(user_location) { 590 591 $(this_current).parent().find('.wpgmp_auto_suggest').data('latitude', user_location.lat()); 592 $(this_current).parent().find('.wpgmp_auto_suggest').data('longitude', user_location.lng()); 593 594 map_obj.geocoder.geocode({ 595 "latLng": user_location 596 }, function(results, status) { 597 598 if (status == google.maps.GeocoderStatus.OK) { 599 current_address = results[0]["formatted_address"]; 600 $(this_current).parent().find('.wpgmp_auto_suggest').val(current_address); 601 } else 602 console.log(status); 603 604 }); 605 606 }, function() { 607 608 console.log("" + wpgmp_local.wpgmp_not_working + ""); 609 610 }); 611 612 }); 613 } //tabs ended 614 615 616 617 if (typeof map_obj.map_data.geojson != 'undefined') { 618 map_obj.load_json(map_obj.map_data.geojson); 619 } 620 621 $("body").on("click", ".wpgmp_marker_link", function() { 622 map_obj.open_infowindow($(this).data("marker")); 623 $('html, body').animate({ 624 scrollTop: $(map_obj.container).offset().top - 150 625 }, 500); 626 }); 627 628 $(map_obj.container).on("click", ".wpgmp_listing_container .place_title", function() { 629 map_obj.open_infowindow($(this).data("marker")); 630 $('html, body').animate({ 631 scrollTop: $(map_obj.container).offset().top - 150 632 }, 500); 633 }); 634 635 $(map_obj.container).on("click", ".wpgmp_tab_item .place_title", function() { 636 map_obj.open_infowindow($(this).data("marker")); 637 }); 638 639 // REGISTER AUTO SUGGEST
640 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 641 642 if (map_obj.settings.show_center_circle === true) { 643 map_obj.show_center_circle(); 644 } 645 646 if (map_obj.settings.show_center_marker === true) { 647 map_obj.show_center_marker(); 648 } 649 650 if (typeof map_obj.map_data.shapes != 'undefined') { 651 652 if (map_obj.map_data.shapes.drawing_editable === true) 653 this.enable_drawing(); 654 655 } 656 657 658 }, 659 load_json: function(url) { 660 this.map.data.loadGeoJson(url); 661 }, 662 createMarker: function(place) { 663 var map_obj = this; 664 var map = map_obj.map; 665 var placeLoc = place.geometry.location; 666 var image = { 667 url: place.icon, 668 size: new google.maps.Size(25, 25), 669 scaledSize: new google.maps.Size(25, 25) 670 }; 671 672 place.marker = new google.maps.Marker({ 673 map: map, 674 position: place.geometry.location, 675 icon: image 676 }); 677 678 google.maps.event.addListener(place.marker, 'click', function() { 679 map_obj.amenity_infowindow.setContent(place.name); 680 map_obj.amenity_infowindow.open(map, this); 681 }); 682 map_obj.current_amenities.push(place); 683 }, 684 wpgmp_image_type_overlays: function() { 685 var map_obj = this; 686 var imageMapType = new google.maps.ImageMapType({ 687 getTileUrl: function(coord, zoom) { 688 return ['http://www.gstatic.com/io2010maps/tiles/5/L2_', 689 zoom, '_', coord.x, '_', coord.y, '.png' 690 ].join(''); 691 }, 692 tileSize: new google.maps.Size(256, 256) 693 }); 694 695 map_obj.map.overlayMapTypes.push(imageMapType); 696 697 }, 698 wpgmp_within_radius: function(place, search_area) { 699 var map_obj = this; 700 var radius = $(map_obj.container).find('select[name="map_radius"]').val(); 701 var dimension = map_obj.map_data.listing.radius_dimension; 702 if (dimension == 'km') { 703 radius = parseInt(radius) * 1000; 704 } else { 705 radius = parseInt(radius) * 1609.34; 706 } 707 if (google.maps.geometry.spherical.computeDistanceBetween(place.marker.getPosition(), search_area) < radius) { 708 return true; 709 } else { 710 return false; 711 } 712 }, 713 wpgmp_get_nearby_locations: function(lat1, lon1, radius) { 714 var current_rd = 'miles'; 715 var map_obj = this; 716 var radius_km = 6371; 717 718 719 if (current_rd == "miles") { 720 max_radius_km = radius * 1.61; 721 } else if (current_rd == "km") { 722 max_radius_km = radius; 723 } 724 725 var distances = []; 726 var closest = -1; 727 var pi = Math.PI; 728 var marker_info = {}; 729 730 $.each(map_obj.places, function(index, place) { 731 732 var lat2 = place.location.lat; 733 var lon2 = place.location.lng; 734 735 var chLat = lat2 - lat1; 736 var chLon = lon2 - lon1; 737 738 var dLat = chLat * (pi / 180); 739 var dLon = chLon * (pi / 180); 740 741 742 var rLat1 = lat1 * (pi / 180); 743 var rLat2 = lat2 * (pi / 180); 744 745 var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + 746 Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(rLat1) * Math.cos(rLat2); 747 var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 748 var d = radius_km * c; 749 750 751 if (max_radius_km !== 0) { 752 if (d <= max_radius_km) { 753 distances[d] = place; 754 distances.sort(function(a, b) { 755 return a - b; 756 }); 757 marker_info["marker" + place.id] = d; 758 } 759 } else { 760 distances[d] = markers[i]; 761 distances.sort(function(a, b) { 762 return a - b; 763 }); 764 marker_info["marker" + place.id] = d; 765 } 766 767 }); 768
769 sortest_markers = map_obj.wpgmp_sort_distance(marker_info); 770 771 return sortest_markers; 772 }, 773 774 wpgmp_sort_distance: function(obj) { 775 var arr = []; 776 for (var prop in obj) { 777 if (obj.hasOwnProperty(prop)) { 778 arr.push({ 779 "key": prop, 780 "value": obj[prop] 781 }); 782 } 783 } 784 arr.sort(function(a, b) { 785 return a.value - b.value; 786 }); 787 return arr; 788 }, 789 790 get_user_position: function(SuccessCallback, ErrorCallback) { 791 792 var map_obj = this; 793 794 if (!map_obj.user_lat_lng) { 795 796 navigator.geolocation.getCurrentPosition(function(position) { 797 798 map_obj.user_lat_lng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 799 if (SuccessCallback) 800 SuccessCallback(map_obj.user_lat_lng); 801 802 }, function(ErrorPosition) { 803 if (ErrorCallback) 804 ErrorCallback(ErrorPosition); 805 }, { 806 enableHighAccuracy: true, 807 timeout: 5000, 808 maximumAge: 0 809 }); 810 } else { 811 if (SuccessCallback) 812 SuccessCallback(map_obj.user_lat_lng); 813 } 814 }, 815 816 marker_bind: function(marker) { 817 818 map_obj = this; 819 820 google.maps.event.addListener(marker, 'drag', function() { 821 822 var position = marker.getPosition(); 823 824 map_obj.geocoder.geocode({ 825 latLng: position 826 }, function(results, status) { 827 828 if (status == google.maps.GeocoderStatus.OK) { 829 830 $("#googlemap_address").val(results[0].formatted_address); 831 832 $(".google_city").val(map_obj.wpgmp_finddata(results[0], 'administrative_area_level_3') || map_obj.wpgmp_finddata(results[0], 'locality')); 833 $(".google_state").val(map_obj.wpgmp_finddata(results[0], "administrative_area_level_1")); 834 $(".google_country").val(map_obj.wpgmp_finddata(results[0], "country")); 835 836 if (results[0].address_components) { 837 for (var i = 0; i < results[0].address_components.length; i++) { 838 for (var j = 0; j < results[0].address_components[i].types.length; j++) { 839 if (results[0].address_components[i].types[j] == "postal_code") { 840 wpgmp_zip_code = results[0].address_components[i].long_name; 841 $(".google_postal_code").val(wpgmp_zip_code); 842 } 843 } 844 } 845 } 846 } 847 }); 848 849 $(".google_latitude").val(position.lat()); 850 $(".google_longitude").val(position.lng()); 851 }); 852 853 }, 854 855 google_auto_suggest: function(obj) { 856 857 var map_obj = this; 858 859 obj.each(function() { 860 var current_input = this; 861 var autocomplete = new google.maps.places.Autocomplete(this); 862 863 autocomplete.bindTo('bounds', map_obj.map); 864 865 if ($(this).attr("name") == 'location_address') { 866 var infowindow = new google.maps.InfoWindow(); 867 var marker = new google.maps.Marker({ 868 map: map_obj.map, 869 draggable: true, 870 anchorPoint: new google.maps.Point(0, -29) 871 }); 872 873 map_obj.marker_bind(marker); 874 875 google.maps.event.addListener(autocomplete, 'place_changed', function() { 876 877 var place = autocomplete.getPlace(); 878 if (!place.geometry) { 879 return; 880 } 881 882 // If the place has a geometry, then present it on a map. 883 if (place.geometry.viewport) { 884 map_obj.map.fitBounds(place.geometry.viewport); 885 } else { 886 map_obj.map.setCenter(place.geometry.location); 887 map_obj.map.setZoom(17); 888 } 889 890 $(".google_latitude").val(place.geometry.location.lat()); 891 $(".google_longitude").val(place.geometry.location.lng()); 892 $(".google_city").val(map_obj.wpgmp_finddata(place, 'administrative_area_level_3') || map_obj.wpgmp_finddata(place, 'locality')); 893 $(".google_state").val(map_obj.wpgmp_finddata(place, "administrative_area_level_1")); 894 $(".google_country").val(map_obj.wpgmp_finddata(place, "country")); 895 if (place.address_components) { 896 for (var i = 0; i < place.address_components.length; i++) { 897 for (var j = 0; j < place.address_components[i].types.length; j++) { 898 if (place.address_components[i].types[j] == "postal_code") { 899 wpgmp_zip_code = place.address_components[i].long_name; 900 $(".google_postal_code").val(wpgmp_zip_code); 901 } 902 } 903 } 904 } 905 906 marker.setPosition(place.geometry.location); 907 marker.setVisible(true); 908 }); 909 } else { 910 911 google.maps.event.addListener(autocomplete, 'place_changed', function() { 912 913 var place = autocomplete.getPlace(); 914 if (!place.geometry) { 915 return; 916 } 917 918 $().val(place.geometry.location.lat()); 919 $(current_input).data('longitude', place.geometry.location.lng()); 920 $(current_input).data('latitude', place.geometry.location.lat()); 921 922 }); 923 } 924 }); 925 }, 926 927 wpgmp_finddata: function(result, type) { 928 var component_name = ""; 929 for (i = 0; i < result.address_components.length; ++i) { 930 var component = result.address_components[i]; 931 $.each(component.types, function(index, value) { 932 if (value == type) { 933 component_name = component.long_name; 934 } 935 }); 936 937 938 } 939 return component_name; 940 }, 941 clearSelection: function() { 942 var map_obj = this; 943 if (map_obj.selectedShape) { 944 map_obj.selectedShape.setEditable(false); 945 map_obj.selectedShape = null; 946 } 947 }, 948 setSelection: function(shape) { 949 var map_obj = this; 950 map_obj.clearSelection(); 951 map_obj.selectedShape = shape; 952 map_obj.selectedShape.setEditable(true); 953 }, 954 deleteSelectedShape: function() { 955 var map_obj = this; 956 var key; 957 if (map_obj.selectedShape) { 958 for (key in map_obj.wpgmp_circles) { 959 if (map_obj.wpgmp_circles[key] == map_obj.selectedShape) { 960 map_obj.wpgmp_circles.splice(key, 1); 961 } 962 } 963 for (key in map_obj.wpgmp_rectangles) { 964 if (map_obj.wpgmp_rectangles[key] == map_obj.selectedShape) { 965 map_obj.wpgmp_rectangles.splice(key, 1); 966 } 967 } 968 for (key in map_obj.wpgmp_polygons) { 969 if (map_obj.wpgmp_polygons[key] == map_obj.selectedShape) { 970 map_obj.wpgmp_polygons.splice(key, 1); 971 } 972 } 973 for (key in map_obj.wpgmp_polylines) { 974 if (map_obj.wpgmp_polylines[key] == map_obj.selectedShape) { 975 map_obj.wpgmp_polylines.splice(key, 1); 976 } 977 } 978 map_obj.selectedShape.setMap(null); 979 } 980 }, 981 add_tab: function(title, content) { 982 983 var tab = []; 984 985 tab.title = title; 986 tab.content = content; 987 this.tabs.push(tab); 988 }, 989 990 show_tabs: function() { 991 992 if (this.tabs.length === 0) 993 return; 994 995 var content = '<div class="wpgmp_tabs_container cleanslate"><ul class="wpgmp_tabs clearfix">'; 996 997 $.each(this.tabs, function(index, tab) { 998 if (tab.title == "categories") 999 content += '<li class="wpgmp-tab-' + index + '" rel="' + index + '"><a class="active" href="javascript:void(0);">' + tab.title + '</a></li>'; 1000 else 1001 content += '<li class="wpgmp-tab-' + index + '" rel="' + index + '"><a href="javascript:void(0);">' + tab.title + '</a></li>'; 1002 }); 1003 1004 content += '</ul>'; 1005 1006 content += '<div class="wpgmp_toggle_main_container">'; 1007 1008 $.each(this.tabs, function(index, tab) { 1009 content += '<div id="wpgmp_tab_' + index + '">'; 1010 content += tab.content; 1011 content += '</div>'; 1012 }); 1013 1014 content += '</div><div class="wpgmp_toggle_container">' + wpgmp_local.hide + '</div></div>'; 1015 1016 return content; 1017 }, 1018 1019 map_widgets: function() { 1020 1021 var content = ''; 1022 1023 if (this.map_data.map_tabs.category_tab.cat_tab === true) 1024 this.widget_category(); 1025 1026 if (this.map_data.map_tabs.direction_tab.dir_tab === true) 1027 this.widget_directions(); 1028 1029 if (this.map_data.map_tabs.nearby_tab.near_tab === true) 1030 this.widget_nearby(); 1031 1032 if (this.map_data.map_tabs.route_tab.display_route_tab === true) 1033 this.widget_route_tab(); 1034 1035 if (typeof this.map_data.map_tabs.extension_tabs != 'undefined') { 1036 this.widget_extensions_tab(); 1037 } 1038 content += this.show_tabs(); 1039 1040 $(this.element).append(content); //todo 1041 }, 1042 1043 widget_extensions_tab: function() { 1044 var map_obj = this; 1045 var new_tabs = map_obj.map_data.map_tabs.extension_tabs; 1046 if (typeof new_tabs != 'undefined' && new_tabs.length > 0) { 1047 $.each(new_tabs, function(index, tab) { 1048 map_obj.add_tab(tab.title, tab.content); 1049 }); 1050 } 1051 }, 1052 widget_route_tab: function() { 1053 1054 var route_data = this.map_data.map_tabs.route_tab.route_tab_data; 1055 1056 var content = ''; 1057 1058 if (this.map_data.map_tabs.route_tab.display_route_tab_data === true) { 1059 content += '<div id="wpgmp_route_tab">'; 1060 if (route_data) { 1061 $.each(route_data, function(index, route) { 1062 content += '<div class="wpgmp_tab_item">'; 1063 content += '<input type="checkbox" class="wpgmp_
1063specific_route_item" value="' + route.route_id + '">'; 1064 var box = '<span style="display:inline-block;width:10px;height:10px;background-color:' + route.route_stroke_color + ';float:right;margin-right:10px;margin-top:5px;"></span>'; 1065 content += '<a href="javascript:void(0);" class="wpgmp_cat_title accordion accordion-close">' + route.route_title + box + '</a>'; 1066 1067 content += '<div class="directions-panel-route' + route.route_id + ' wpgmp-directions-panel-route-style" style="overflow-y:scroll; height:200px;"></div>'; 1068 1069 content += '</div>'; 1070 }); 1071 } 1072 1073 content += '</div>'; 1074 } 1075 this.add_tab(this.map_data.map_tabs.route_tab.route_tab_title, content); 1076 }, 1077 1078 widget_nearby: function() { 1079 var content = '<div class="wpgmp_nearby_container">'; 1080 content += '<p><input placeholder="' + wpgmp_local.start_point + '" type="text" name="start_point" class="input start_point wpgmp_auto_suggest" autocomplete="off" /><span class="wpgmp_mcurrent_loction" title="' + wpgmp_local.take_current_location + '"> </span></p>'; 1081 content += '<p><input name="wpgmp_radius" placeholder="' + wpgmp_local.radius + '" type="text" class="input" value="25" size="8"> <select name="wpgmp_route_dimension"><option value="miles">' + wpgmp_local.miles + '</option><option value="km">' + wpgmp_local.km + '</option></select></p>'; 1082 if (typeof this.map_data.map_tabs.nearby_tab.nearby_amenities != 'undefined') { 1083 var all_amenities = this.map_data.map_tabs.nearby_tab.nearby_amenities; 1084 1085 if (all_amenities) { 1086 content += '<fieldset class="choose_amenities"><legend>' + wpgmp_local.show_amenities + '</legend>'; 1087 $.each(all_amenities, function(index, amenity) { 1088 content += "<input type='checkbox' value='" + amenity + "' name='wpgmp_place_types[]' /> " + amenity; 1089 }); 1090 } 1091 1092 } 1093 content += '</fieldset>'; 1094 content += '<p style="clear:both;"><input type="submit" value="' + wpgmp_local.find_location + '" class="wpgmp_find_nearby_button" /></p><div class="location_panel"></div></div>'; 1095 1096 1097 this.add_tab(this.map_data.map_tabs.nearby_tab.nearby_tab_title, content); 1098 1099 }, 1100 1101 widget_directions: function() { 1102 1103 var content = ''; 1104 1105 content = '<div class="wpgmp_direction_container">'; 1106 1107 if (this.map_data.map_tabs.route_start_location == "textbox") { 1108 content += '<p><input value="' + this.map_data.map_tabs.direction_tab.default_start_location + '" placeholder="' + wpgmp_local.start_location + '" type="text" name="start_point" class="input start_point wpgmp_auto_suggest" autocomplete="off" /><span class="wpgmp_mcurrent_loction" title="' + wpgmp_local.take_current_location + '"> </span></p>'; 1109 } else if (this.map_data.map_tabs.route_start_location == "selectbox") { 1110 content += '<p><select name="start_point" class="input start_point" autocomplete="off" >'; 1111 1112 content += '<option value="">' + wpgmp_local.start_location + '</option>'; 1113 1114 $.each(this.places, function(index, place) { 1115 1116 content += '<option value="' + place.address + '">' + place.title + '</option>'; 1117 1118 }); 1119 1120 content += '</select>'; 1121 } 1122 1123 if (this.map_data.map_tabs.route_end_location == "textbox") { 1124 content += '<p><input value="' + this.map_data.map_tabs.direction_tab.default_end_location + '" placeholder="' + wpgmp_local.end_location + '" name="end_point" type="text" class="input end_point wpgmp_auto_suggest" autocomplete="off" /></p>'; 1125 } else if (this.map_data.map_tabs.route_end_location == "selectbox") { 1126 content += '<p><select name="end_point" class="input end_point" autocomplete="off" >'; 1127 1128 content += '<option value="">' + wpgmp_local.end_location + '</option>'; 1129 1130 $.each(this.places, function(index, place) { 1131 content += '<option value="' + place.address + '">' + place.title + '</option>'; 1132 1133 }); 1134 1135 content += '</select>'; 1136 } 1137 1138 content += '<p><select name="travel_mode" id="travaling_mode"> <option value="DRIVING" selected="selected">' + wpgmp_local.driving + '</option> <option value="BICYCLING">' + wpgmp_local.bicycling + '</option> <option value="WALKING">' + wpgmp_local.walking + '</option> <option value="TRANSIT">' + wpgmp_local.transit + '</option> </select></p>'; 1139 1140 content += '<p><select name="travel_unit" id="travel_unit"> <option value="metric" selected="selected">' + wpgmp_local.metric + '</option> <option value="imperial">' + wpgmp_local.imperial + '</option></select></p><p><input type="submit" value="' + wpgmp_local.find_direction + '" class="wpgmp_find_direction"></p><div class="directions-panel" style="overflow-y:scroll;display:none;"></div></div>'; 1141 1142 this.add_tab(this.map_data.map_tabs.direction_tab.direction_tab_title, content); 1143 }, 1144 1145 widget_category: function() { 1146 1147 var map_obj = this; 1148 if (map_obj.map_data.map_tabs.category_tab.select_all === true) { 1149 var content = '<input checked="checked" type="checkbox" value="true" name="wpgmp_select_all">  ' + wpgmp_local.select_all + '<br>'; 1150 } else { 1151 var content = ''; 1152 } 1153 var categories_tab_data = {}; 1154 if (typeof map_obj.map_data.places != 'undefined') { 1155 $.each(map_obj.map_data.places, function(index, place) { 1156 if (typeof place.categories != 'undefined') { 1157 $.each(place.categories, function(index, categories) { 1158 1159 if (typeof categories.type != "undefined" && categories.type == 'category' && categories.name) { 1160 1161 1162 if (typeof categories_tab_data[categories.id] == "undefined") { 1163 categories_tab_data[categories.id] = {}; 1164 categories_tab_data[categories.id]['data'] = []; 1165 } 1166 1167 categories_tab_data[categories.id]['cat_id'] = categories.id; 1168 categories_tab_data[categories.id]['cat_title'] = categories.name; 1169 categories_tab_data[categories.id]['cat_marker_icon']
1169= categories.icon; 1170 var redirect_permalink = ""; 1171 if (place.location.redirect_permalink) 1172 redirect_permalink = place.location.redirect_permalink; 1173 1174 var redirect_custom_link = ""; 1175 if (place.location.redirect_custom_link) 1176 redirect_custom_link = place.location.redirect_custom_link; 1177 1178 categories_tab_data[categories.id]['data'].push({ 1179 "cat_location_id": place.id, 1180 "cat_location_title": place.title, 1181 "cat_location_address": place.address, 1182 "cat_location_zoom": place.location.zoom, 1183 "onclick_action": place.location.onclick_action, 1184 "redirect_permalink": redirect_permalink, 1185 "redirect_custom_link": redirect_custom_link, 1186 }); 1187 1188 } 1189 }); 1190 } 1191 1192 }); 1193 } 1194 var category_orders = []; 1195 if (typeof categories_tab_data != 'undefined') { 1196 $.each(categories_tab_data, function(index, categories) { 1197 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == 'count') { 1198 category_orders.push(categories.data.length); 1199 } else { 1200 category_orders.push(categories.cat_title); 1201 } 1202 }); 1203 } 1204 1205 category_orders.sort(); 1206 1207 var ordered_categories = []; 1208 $.each(category_orders, function(index, cat_title) { 1209 $.each(categories_tab_data, function(index, categories) { 1210 var compare_with; 1211 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == 'count') { 1212 compare_with = categories.data.length; 1213 } else { 1214 compare_with = categories.cat_title; 1215 } 1216 1217 if (cat_title == compare_with) { 1218 ordered_categories.push(categories); 1219 } 1220 }); 1221 }); 1222 1223 if (typeof ordered_categories != 'undefined') { 1224 $.each(ordered_categories, function(index, categories) { 1225 1226 var category_image = ''; 1227 1228 if (typeof categories.cat_marker_icon != 'undefined') { 1229 category_image = '<span class="arrow"><img src="' + categories.cat_marker_icon + '"></span>'; 1230 } 1231 1232 content += '<div class="wpgmp_tab_item">'; 1233 1234 content += '<input type="checkbox" class="wpgmp_specific_category_item" value="' + categories.cat_id + '">'; 1235 1236 if (map_obj.map_data.map_tabs.category_tab.show_count === true) { 1237 location_count = " (" + categories.data.length + ")"; 1238 } else { 1239 location_count = ""; 1240 } 1241 1242 1243 content += '<a href="javascript:void(0);" class="wpgmp_cat_title accordion accordion-close">' + categories.cat_title + location_count + category_image + '</a>'; 1244 1245 if (map_obj.map_data.map_tabs.category_tab.hide_location !== true) { 1246 1247 content += '<div class="scroll-pane" style="height: 97px; width:100%;">'; 1248 1249 content += '<ul class="wpgmp_location_container">'; 1250 1251 $.each(categories.data, function(name, location) { 1252 1253 if (location.onclick_action == "marker") { 1254 content += '<li><input type="checkbox" class="wpgmp_specific_location_item" value="' + location.cat_location_id + '" /><a class="place_title" data-marker="' + location.cat_location_id + '" data-zoom="' + location.cat_location_zoom + '" href="javascript:void(0);">' + location.cat_location_title + '</a></li>'; 1255 } else if (location.onclick_action == "post") { 1256 content += '<li>
1256<input type="checkbox" class="wpgmp_specific_location_item" value="' + location.cat_location_id + '" /><a href="' + location.redirect_permalink + '" target="_blank">' + location.cat_location_title + '</a></li>'; 1257 } else if (location.onclick_action == "custom_link") { 1258 content += '<li><input type="checkbox" class="wpgmp_specific_location_item" value="' + location.cat_location_id + '" /><a href="' + location.redirect_custom_link + '" target="_blank">' + location.cat_location_title + '</a></li>'; 1259 } 1260 1261 }); 1262 1263 content += '</ul>'; 1264 1265 content += '</div>'; 1266 } 1267 1268 content += '</div>'; 1269 1270 }); 1271 } 1272 map_obj.add_tab(map_obj.map_data.map_tabs.category_tab.cat_tab_title, content); 1273 1274 }, 1275 1276 sorting: function(order_by, in_order) { 1277 1278 switch (order_by) { 1279 1280 case 'category': 1281 this.places.sort(this.sortByCategory); 1282 this.show_places.sort(this.sortByCategory); 1283 if (in_order == 'desc') { 1284 this.places.reverse(); 1285 this.show_places.reverse(); 1286 } 1287 break; 1288 1289 case 'title': 1290 this.map_data.places.sort(this.sortByTitle); 1291 this.show_places.sort(this.sortByTitle); 1292 if (in_order == 'desc') { 1293 this.places.reverse(); 1294 this.show_places.reverse(); 1295 } 1296 break; 1297 1298 case 'address': 1299 this.map_data.places.sort(this.sortByAddress); 1300 this.show_places.sort(this.sortByAddress); 1301 if (in_order == 'desc') { 1302 this.places.reverse(); 1303 this.show_places.reverse(); 1304 } 1305 break; 1306 } 1307 }, 1308 1309 sortByCategory: function(a, b) { 1310 if (b.categories[0] && a.categories[0]) { 1311 if (a.categories[0].name && b.categories[0].name) { 1312 var a_val = a.categories[0].name.toLowerCase(); 1313 var b_val = b.categories[0].name.toLowerCase(); 1314 return ((a_val < b_val) ? -1 : ((a_val > b_val) ? 1 : 0)); 1315 } 1316 1317 } 1318 }, 1319 1320 sortByTitle: function(a, b) { 1321 var a_val = a.title.toLowerCase(); 1322 var b_val = b.title.toLowerCase(); 1323 return ((a_val < b_val) ? -1 : ((a_val > b_val) ? 1 : 0)); 1324 }, 1325 1326 sortByAddress: function(a, b) { 1327 var a_val = a.address.toLowerCase(); 1328 var b_val = b.address.toLowerCase(); 1329 return ((a_val < b_val) ? -1 : ((a_val > b_val) ? 1 : 0)); 1330 }, 1331 1332 update_filters: function() { 1333 1334 var filters; 1335 if (typeof this.map_data.listing != 'undefined') { 1336 filters = $.map(this.map_data.listing.filters, function(filter, i) { 1337 1338 var val = $('select[name="' + filter + '"]'); 1339 return { 1340 name: val.attr('name'), 1341 val: val.val() 1342 }; 1343 }); 1344 } 1345 this.apply_filters(filters); 1346 1347 }, 1348 1349 apply_filters: function(filters) { 1350 1351 var map_obj = this; 1352 1353 var showAll = true; 1354 var show = true; 1355 map_obj.show_places = []; 1356 1357 if (typeof map_obj.map_data.places != 'undefined') { 1358 $.each(map_obj.map_data.places, function(place_key, place) { 1359 1360 show = true; 1361 enable_search_term = false; 1362 1363 if (typeof map_obj.map_data.listing != 'undefined') { 1364 if (map_obj.map_data.listing.display_search_form === true) { 1365 search_term = $(map_obj.map_data.listing.listing_container + ' input[name="wpgmp_search_input"]').val(); 1366 search_term = search_term.toLowerCase(); 1367 if (search_term.length > 0) { 1368 enable_search_term = true; 1369 } 1370 } 1371 } 1372 if (typeof filters != 'undefined') { 1373 1374 $.each(filters, function(filter_key, filter) { 1375 1376 var in_category = false;
1377 1378 if (filter.val) { 1379 if (typeof place.categories != 'undefined') { 1380 $.each(place.categories, function(cat_index, category) { 1381 1382 if (category.id == filter.val) 1383 in_category = true; 1384 1385 }); 1386 } 1387 1388 if (in_category === false) 1389 show = false; 1390 1391 } else { 1392 filter.val = ""; 1393 } 1394 1395 if (enable_search_term === true && show === true) { 1396 in_category = false; 1397 if (typeof place.categories != 'undefined') { 1398 $.each(place.categories, function(cat_index, category) { 1399 1400 if (category.name && category.name.indexOf(search_term) >= 0) 1401 in_category = true; 1402 }); 1403 } 1404 if (place.title.toLowerCase().indexOf(search_term) >= 0) { 1405 show = true; 1406 1407 } else if (place.content.toLowerCase().indexOf(search_term) >= 0) { 1408 show = true; 1409 1410 } else if (place.location.lat.toLowerCase().indexOf(search_term) >= 0) { 1411 show = true; 1412 1413 } else if (place.location.lng.toLowerCase().indexOf(search_term) >= 0) { 1414 show = true; 1415 1416 } else if (place.address && place.address.toLowerCase().indexOf(search_term) >= 0) { 1417 show = true; 1418 } else if (place.location.state && place.location.state.toLowerCase().indexOf(search_term) >= 0) { 1419 show = true; 1420 1421 } else if (place.location.country && place.location.country.toLowerCase().indexOf(search_term) >= 0) { 1422 show = true; 1423 1424 } else if (place.location.postal_code && place.location.postal_code.toLowerCase().indexOf(search_term) >= 0) { 1425 show = true; 1426 1427 } else if (place.location.city && place.location.city.toLowerCase().indexOf(search_term) >= 0) { 1428 show = true; 1429 } else if (typeof map_obj.search_area != 'undefined' && map_obj.search_area != '' && map_obj.wpgmp_within_radius(place, map_obj.search_area) === true) { 1430 show = true; 1431 } else { 1432 show = false; 1433 } 1434 1435 } 1436 }); 1437 } 1438 1439 // if checked category 1440 if (typeof map_obj.map_data.map_tabs != 'undefined') { 1441 if (map_obj.map_data.map_tabs.category_tab.cat_tab === true && show != false) { 1442 var all_selected_category = $('.wpgmp_specific_category_item:checked'); 1443 var in_checked_category = false; 1444 if (all_selected_category.length === 0) { 1445 // means no any category selected so show those location without categories. 1446 if (typeof place.categories != 'undefined') { 1447 $.each(place.categories, function(cat_index, category) { 1448 if (category.id === '') 1449 in_checked_category = true; 1450 }); 1451 } 1452 } 1453 1454 $.each(all_selected_category, function(index, selected_category) { 1455 var all_not_selected_location = $(selected_category).parent().find('.wpgmp_specific_location_item:not(:checked)'); 1456 if (typeof place.categories != 'undefined') { 1457 $.each(place.categories, function(cat_index, category) { 1458 if (category.id === '') 1459 in_checked_category = true; 1460 else if (category.id == $(selected_category).val()) { 1461 in_checked_category = true; 1462 place.marker.setIcon(category.icon); 1463 } 1464 1465 }); 1466 } 1467 1468 //Hide unchecked locations. 1469 if (all_not_selected_location.length !== 0) { 1470 $.each(all_not_selected_location, function(index_loc, not_selected_location) { 1471 if (place.id == $(not_selected_location).val()) { 1472 in_checked_category = false;
1473 } 1474 }); 1475 } 1476 1477 }); 1478 1479 1480 if (in_checked_category === false) 1481 show = false; 1482 else 1483 show = true; 1484 } 1485 1486 } 1487 1488 place.marker.visible = show; 1489 place.marker.setVisible(show); 1490 place.infowindow.close(); 1491 place.marker.setAnimation(null); 1492 if (show === true) 1493 map_obj.show_places.push(place); 1494 }); 1495 } 1496 1497 1498 if (typeof map_obj.map_data.listing != 'undefined') 1499 map_obj.update_places_listing(); 1500 1501 if (typeof map_obj.map_data.marker_cluster != 'undefined') { 1502 map_obj.set_marker_cluster(); 1503 } 1504 1505 }, 1506 1507 create_perpage_option: function() { 1508 1509 var map_obj = this; 1510 var options = ''; 1511 var content = ''; 1512 1513 content += '<select name="map_perpage_location_sorting" class="choose_salutation">'; 1514 content += '<option value="' + map_obj.map_data.listing.pagination.listing_per_page + '">' + wpgmp_local.show_locations + '</option>'; 1515 content += '<option value="25">25</option>'; 1516 content += '<option value="50">50</option>'; 1517 content += '<option value="100">100</option>'; 1518 content += '<option value="200">200</option>'; 1519 content += '<option value="500">500</option>'; 1520 content += '<option value="' + map_obj.show_places.length + '">' + wpgmp_local.all_location + '</option>'; 1521 content += '</select>'; 1522 1523 return content; 1524 1525 }, 1526 1527 create_sorting: function() { 1528 1529 var options = ''; 1530 1531 var content = ''; 1532 1533 if (this.map_data.listing.display_sorting_filter === true) { 1534 content += '<select name="map_sorting"><option value="">' + wpgmp_local.sort_by + '</option>'; 1535 $.each(this.map_data.listing.sorting_options, function(id, name) { 1536 content += "<option value='" + id + "'>" + name + "</option>"; 1537 }); 1538 content += '</select>'; 1539 } 1540 1541 return content; 1542 }, 1543 1544 create_radius: function() { 1545 1546 var options = ''; 1547 1548 var content = ''; 1549 if (this.map_data.listing.display_radius_filter === true) { 1550 1551 content += '<select name="map_radius"><option value="">' + wpgmp_local.select_radius + '</option>'; 1552 var radius_options = this.map_data.listing.radius_options; 1553 var radius_dimension = this.map_data.listing.radius_dimension; 1554 $.each(radius_options.split(','), function(id, name) { 1555 if (radius_dimension == 'miles') { 1556 content += "<option value='" + name + "'>" + name + ' ' + wpgmp_local.miles + "</option>"; 1557 } else { 1558 content += "<option value='" + name + "'>" + name + ' ' + wpgmp_local.km + "</option>"; 1559 } 1560 }); 1561 content += '</select>'; 1562 } 1563 1564 return content; 1565 }, 1566 1567 create_filters: function() { 1568 1569 var options = ''; 1570 var filters = {}; 1571 var places = this.map_data.places; 1572 var wpgmp_listing_filter = this.map_data.listing; 1573 var wpgmp_alltfilter = wpgmp_listing_filter.display_taxonomies_all_filter; 1574 1575 $.each(places, function(index, place) { 1576 if (typeof place.categories == 'undefined') { 1577 place.categories = {}; 1578 } 1579 $.each(place.categories, function(cat_index, category) { 1580 1581 if (typeof filters[category.type] == 'undefined') { 1582 filters[category.type] = {}; 1583 } 1584 if (category.name) { 1585 filters[category.type][category.name] = category.id; 1586 } 1587 1588 }); 1589 }); 1590 // now create select boxes 1591 1592 var content = ''; 1593 1594 $.each(filters, function(index, options) { 1595 if (wpgmp_listing_filter.display_category_filter === true && index == "category") { 1596 content += '<select name="place_' + index + '">'; 1597 content += '<option value="">' + wpgmp_local.select_category + '</option>'; 1598 $.each(options, function(name, value) { 1599 content += "<option value='" + value + "'>" + name + "</option>"; 1600 }); 1601 content += '</select>'; 1602 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 1603 if (wpgmp_alltfilter === null) 1604 return false;
1605 1606 if (wpgmp_alltfilter.indexOf(index) > -1) { 1607 content += '<select name="place_' + index + '">'; 1608 content += '<option value="">Select ' + index + '</option>'; 1609 $.each(options, function(name, value) { 1610 content += "<option value='" + value + "'>" + name + "</option>"; 1611 }); 1612 content += '</select>'; 1613 } 1614 } 1615 1616 }); 1617 1618 return content; 1619 }, 1620 1621 update_places_listing: function() { 1622 1623 var map_obj = this; 1624 1625 if (map_obj.per_page_value > 0) 1626 map_obj.per_page_value = map_obj.per_page_value; 1627 else 1628 map_obj.per_page_value = map_obj.map_data.listing.pagination.listing_per_page; 1629 $(map_obj.container).find(".location_pagination" + map_obj.map_data.map_property.map_id).pagination(map_obj.show_places.length, { 1630 callback: map_obj.display_places_listing, 1631 map_data: map_obj, 1632 items_per_page: map_obj.per_page_value, 1633 prev_text: wpgmp_local.prev, 1634 next_text: wpgmp_local.next 1635 }); 1636 1637 }, 1638 1639 display_filters_listing: function() { 1640 1641 var wpgmpgl = this.map_data.listing.list_grid; 1642 1643 var content = '<div class="wpgmp_listing_container">'; 1644 1645 content += this.display_filters(); 1646 1647 content += "<div class='wpgmp_categories wpgmp_print_listing " + wpgmpgl + "'></div>"; 1648 1649 content += "</div>"; 1650 1651 $(this.map_data.listing.listing_container).html(content); 1652 1653 }, 1654 1655 display_filters: function() { 1656 1657 var content = ''; 1658 content += '<div class="wpgmp_before_listing">' + this.map_data.listing.listing_header + '</div>'; 1659 1660 if (this.map_data.listing.display_search_form === true) { 1661 content += '<div class="wpgmp_listing_header"><div class="wpgmp_search_form"><input type="text" rel="24" name="wpgmp_search_input" class="wpgmp_search_input" placeholder="' + wpgmp_local.search_placeholder + '"></div></div>'; 1662 } 1663 1664 content += '<div class="categories_filter">' + this.create_filters() + this.create_sorting() + ''; 1665 1666 if (this.map_data.listing.display_location_per_page_filter === true) { 1667 content += ' ' + this.create_perpage_option() + ' '; 1668 } 1669 1670 content += ' ' + this.create_radius() + ' '; 1671 1672 if (this.map_data.listing.display_print_option === true) { 1673 content += ' ' + wpgmp_local.img_print; 1674 } 1675 1676 if (this.map_data.listing.display_grid_option === true) { 1677 content += ' ' + wpgmp_local.img_grid + wpgmp_local.img_list; 1678 } 1679 1680 content += '</div>'; 1681 1682 return content; 1683 }, 1684 1685 find_direction: function(options) { 1686 1687 var map_obj = this; 1688 var request = { 1689 origin: options.start, 1690 destination: options.end, 1691 optimizeWaypoints: true, 1692 travelMode: eval("google.maps.TravelMode." + options.mode), 1693 unitSystem: eval("google.maps.UnitSystem." + options.unit) 1694 }; 1695 console.log(request); 1696 map_obj.directionsService = new google.maps.DirectionsService(); 1697 map_obj.directionsService.route(request, function(response, status) { 1698 if (status == google.maps.DirectionsStatus.OK) { 1699 1700 map_obj.directionsDisplay.setMap(map_obj.map); 1701 map_obj.directionsDisplay.setDirections(response); 1702 if (false == map_obj.map_data.map_tabs.direction_tab.suppress_markers) { 1703 map_obj.directionsDisplay.setPanel(options.direction_panel); 1704 $(options.direction_panel).css('display', 'block'); 1705 } 1706 1707 } 1708 }); 1709 }, 1710 1711 display_places_listing: function(page_index, jq) { 1712 1713 var content = ''; 1714 1715 var map_obj = this; 1716 var items_per_page = 10; 1717 if (map_obj.items_per_page) 1718 items_per_page = map_obj.items_per_page; 1719 else 1720 items_per_page = map_obj.map_data.map_data.listing.pagination.listing_per_page; 1721 1722 var data_source = map_obj.map_data.show_places; 1723 1724 var listing_container = map_obj.map_data.map_data.listing.listing_container; 1725 1726 1727 var listing_placeholder = map_obj.map_data.map_data.listing.listing_placeholder; 1728 1729 var max_elem = Math.min((page_index + 1) * items_per_page, data_source.length); 1730 var link = ''; 1731 1732 1733 // ±±Ï¦é 1734 1735 1736content += '<div style="margin-bottom:20px;" ><h4 class="h4 text-accent-color" ><span>' + wpgmp_local.prev +'</span></h4></div>'; 1737 1738 if (max_elem > 0) { 1739 for (var i = page_index * items_per_page; i < max_elem; i++) { 1740 var place = data_source[i]; 1741 var temp_listing_placeholder = listing_placeholder; 1742 if (place.marker.visible === true) { 1743 if (place.id) { 1744 if (place.location.onclick_action == "marker") { 1745 link = '<a href="javascript:void(0);" class="place_title" data-zoom="' + place.location.zoom + '" data-marker="' + place.id + '" >' + place.title.substr(2) + '</a>'; 1746 } else if (place.location.onclick_action == "post") { 1747 link = '<a href="' + place.location.redirect_permalink + '" target="_blank">' + place.title + '</a>'; 1748 } else if (place.location.onclick_action == "custom_link") { 1749 link = '<a href="' + place.location.redirect_custom_link + '" target="_blank">' + place.title + '</a>'; 1750 } 1751 } 1752 1753 var image = []; 1754 var category_name = []; 1755 var wpgmp_arr = {}; 1756 1757 if (place.categories) { 1758 for (c = 0; c < place.categories.length; c++) { 1759 if (place.categories[c].icon !== '') { 1760 image.push("<img title='" + place.categories[c].name + "' alt='" + place.categories[c].name + "' src='" + place.categories[c].icon + "' />"); 1761 } 1762 1763 if (place.categories[c].type == 'category' && place.categories[c].name != '') { 1764 category_name.push(place.categories[c].name); 1765 } 1766 1767 if (place.categories[c].type != 'category') { 1768 if (typeof place.categories[c].name == "undefined") 1769 continue; 1770 1771 if (place.categories[c].name) 1772 var sep = ','; 1773 1774 if (typeof wpgmp_arr[place.categories[c].type] == "undefined") 1775 wpgmp_arr[place.categories[c].type] = ''; 1776 1777 wpgmp_arr[place.categories[c].type] += place.categories[c].name + sep; 1778 } 1779 } 1780 } 1781 1782 var replaceData = { 1783 "{marker_id}": place.id, 1784 "{marker_title}": link, 1785 "{marker_address}": place.address, 1786 "{marker_latitude}": place.location.lat, 1787 "{marker_longitude}": place.location.lng, 1788 "{marker_city}": place.location.city, 1789 "{marker_state}": place.location.state, 1790 "{marker_country}": place.location.country, 1791 "{marker_postal_code}": place.location.postal_code, 1792 "{marker_zoom}": place.location.zoom, 1793 "{marker_icon}": image, 1794 "{marker_category}": category_name.join(","), 1795 "{marker_message}": place.content, 1796 "{wpgmp_listing_html}": place.listing_hook 1797 1798 }; 1799 1800 //Add extenstion fields of locations 1801 if (typeof place.location.extension_fields != 'undefined') { 1802 for (var extra in place.location.extension_fields) { 1803 if (!place.location.extension_fields[extra]) { 1804 replaceData['{' + extra + '}'] = ''; 1805 1806 } else { 1807 replaceData['{' + extra + '}'] = place.location.extension_fields[extra]; 1808 } 1809 } 1810 } 1811 1812 //Add extra fields of locations 1813 if (typeof place.location.extra_fields != 'undefined') { 1814 for (var extra in place.location.extra_fields) { 1815 if (!place.location.extra_fields[extra]) { 1816 replaceData['{' + extra + '}'] = ''; 1817 1818 } else { 1819 replaceData['{' + extra + '}'] = place.location.extra_fields[extra]; 1820 } 1821 } 1822 } 1823 1824 if (wpgmp_arr) { 1825 for (var n in wpgmp_arr) { 1826 replaceData["{" + n + "}"] = wpgmp_remove_last_comma(wpgmp_arr[n]); 1827 } 1828 } 1829 1830 function wpgmp_remove_last_comma(strng) { 1831 var n = strng.lastIndexOf(","); 1832 var a = strng.substring(0, n) 1833 return a; 1834 } 1835 1836 temp_listing_placeholder = temp_listing_placeholder.replace(/{[^{}]+}/g, function(match) { 1837 if (match in replaceData) { 1838 return (replaceData[match]); 1839 } else { 1840 return (""); 1841 } 1842 }); 1843 1844 1845 if (category_name == wpgmp_local.prev ) { 1846 1847 content += temp_listing_placeholder; } 1848 } 1849 } 1850 } else { 1851 content = "<div class='wpgmp_no_locations'>" + wpgmp_local.wpgmp_location_no_results + "</div>"; 1852 } 1853 1854 1855 1856 // ±±Ï¦é 1857 1858 1859content += '<div style="margin-bottom:20px;" ><h4 class="h4 text-accent-color" ><span>' + wpgmp_local.next +'</span></h4></div>'; 1860 1861 if (max_elem > 0) { 1862 for (var i = page_index * items_per_page; i < max_elem; i++) { 1863 var place = data_source[i]; 1864 var temp_listing_placeholder = listing_placeholder; 1865 if (place.marker.visible === true) { 1866 if (place.id) { 1867 if (place.location.onclick_action == "marker") { 1868 link = '<a href="javascript:void(0);" class="place_title" data-zoom="' + place.location.zoom + '" data-marker="' + place.id + '" >' + place.title.substr(2) + '</a>'; 1869 } else if (place.location.onclick_action == "post") { 1870 link = '<a href="' + place.location.redirect_permalink + '" target="_blank">' + place.title + '</a>'; 1871 } else if (place.location.onclick_action == "custom_link") { 1872 link = '<a href="' + place.location.redirect_custom_link + '" target="_blank">' + place.title + '</a>'; 1873 } 1874 } 1875 1876 var image = []; 1877 var category_name = []; 1878 var wpgmp_arr = {}; 1879 1880 if (place.categories) { 1881 for (c = 0; c < place.categories.length; c++) { 1882 if (place.categories[c].icon !== '') { 1883 image.push("<img title='" + place.categories[c].name + "' alt='" + place.categories[c].name + "' src='" + place.categories[c].icon + "' />"); 1884 } 1885 1886 if (place.categories[c].type == 'category' && place.categories[c].name != '') { 1887 category_name.push(place.categories[c].name); 1888 } 1889 1890 if (place.categories[c].type != 'category') { 1891 if (typeof place.categories[c].name == "undefined") 1892 continue; 1893 1894 if (place.categories[c].name) 1895 var sep = ','; 1896 1897 if (typeof wpgmp_arr[place.categories[c].type] == "undefined") 1898 wpgmp_arr[place.categories[c].type] = ''; 1899 1900 wpgmp_arr[place.categories[c].type] += place.categories[c].name + sep; 1901 } 1902 } 1903 } 1904 1905 var replaceData = { 1906 "{marker_id}": place.id, 1907 "{marker_title}": link, 1908 "{marker_address}": place.address, 1909 "{marker_latitude}": place.location.lat, 1910 "{marker_longitude}": place.location.lng, 1911 "{marker_city}": place.location.city, 1912 "{marker_state}": place.location.state, 1913 "{marker_country}": place.location.country, 1914 "{marker_postal_code}": place.location.postal_code, 1915 "{marker_zoom}": place.location.zoom, 1916 "{marker_icon}": image, 1917 "{marker_category}": category_name.join(","), 1918 "{marker_message}": place.content, 1919 "{wpgmp_listing_html}": place.listing_hook 1920 1921 }; 1922 1923 //Add extenstion fields of locations 1924 if (typeof place.location.extension_fields != 'undefined') { 1925 for (var extra in place.location.extension_fields) { 1926 if (!place.location.extension_fields[extra]) { 1927 replaceData['{' + extra + '}'] = ''; 1928 1929 } else { 1930 replaceData['{' + extra + '}'] = place.location.extension_fields[extra]; 1931 } 1932 } 1933 } 1934 1935 //Add extra fields of locations 1936 if (typeof place.location.extra_fields != 'undefined') { 1937 for (var extra in place.location.extra_fields) { 1938 if (!place.location.extra_fields[extra]) { 1939 replaceData['{' + extra + '}'] = ''; 1940 1941 } else { 1942 replaceData['{' + extra + '}'] = place.location.extra_fields[extra]; 1943 } 1944 } 1945 } 1946 1947 if (wpgmp_arr) { 1948 for (var n in wpgmp_arr) { 1949 replaceData["{" + n + "}"] = wpgmp_remove_last_comma(wpgmp_arr[n]); 1950 } 1951 } 1952 1953 function wpgmp_remove_last_comma(strng) { 1954 var n = strng.lastIndexOf(","); 1955 var a = strng.substring(0, n) 1956 return a; 1957
1957 } 1958 1959 temp_listing_placeholder = temp_listing_placeholder.replace(/{[^{}]+}/g, function(match) { 1960 if (match in replaceData) { 1961 return (replaceData[match]); 1962 } else { 1963 return (""); 1964 } 1965 }); 1966 1967 1968 if (category_name == wpgmp_local.next ) { 1969 1970 content += temp_listing_placeholder; } 1971 } 1972 } 1973 } else { 1974 content = "<div class='wpgmp_no_locations'>" + wpgmp_local.wpgmp_location_no_results + "</div>"; 1975 } 1976 1977 1978 1979 1980 // ±±Ï¦é 1981 1982 1983content += '<div style="margin-bottom:20px;" ><h4 class="h4 text-accent-color" ><span>' + wpgmp_local.select_category +'</span></h4></div>'; 1984 1985 if (max_elem > 0) { 1986 for (var i = page_index * items_per_page; i < max_elem; i++) { 1987 var place = data_source[i]; 1988 var temp_listing_placeholder = listing_placeholder; 1989 if (place.marker.visible === true) { 1990 if (place.id) { 1991 if (place.location.onclick_action == "marker") { 1992 link = '<a href="javascript:void(0);" class="place_title" data-zoom="' + place.location.zoom + '" data-marker="' + place.id + '" >' + place.title.substr(2) + '</a>'; 1993 } else if (place.location.onclick_action == "post") { 1994 link = '<a href="' + place.location.redirect_permalink + '" target="_blank">' + place.title + '</a>'; 1995 } else if (place.location.onclick_action == "custom_link") { 1996 link = '<a href="' + place.location.redirect_custom_link + '" target="_blank">' + place.title + '</a>'; 1997 } 1998 } 1999 2000 var image = []; 2001 var category_name = []; 2002 var wpgmp_arr = {}; 2003 2004 if (place.categories) { 2005 for (c = 0; c < place.categories.length; c++) { 2006 if (place.categories[c].icon !== '') { 2007 image.push("<img title='" + place.categories[c].name + "' alt='" + place.categories[c].name + "' src='" + place.categories[c].icon + "' />"); 2008 } 2009 2010 if (place.categories[c].type == 'category' && place.categories[c].name != '') { 2011 category_name.push(place.categories[c].name); 2012 } 2013 2014 if (place.categories[c].type != 'category') { 2015 if (typeof place.categories[c].name == "undefined") 2016 continue; 2017 2018 if (place.categories[c].name) 2019 var sep = ','; 2020 2021 if (typeof wpgmp_arr[place.categories[c].type] == "undefined") 2022 wpgmp_arr[place.categories[c].type] = ''; 2023 2024 wpgmp_arr[place.categories[c].type] += place.categories[c].name + sep; 2025 } 2026 } 2027 } 2028 2029 var replaceData = { 2030 "{marker_id}": place.id, 2031 "{marker_title}": link, 2032 "{marker_address}": place.address, 2033 "{marker_latitude}": place.location.lat, 2034 "{marker_longitude}": place.location.lng, 2035 "{marker_city}": place.location.city, 2036 "{marker_state}": place.location.state, 2037 "{marker_country}": place.location.country, 2038 "{marker_postal_code}": place.location.postal_code, 2039 "{marker_zoom}": place.location.zoom, 2040 "{marker_icon}": image, 2041 "{marker_category}": category_name.join(","), 2042 "{marker_message}": place.content, 2043 "{wpgmp_listing_html}": place.listing_hook 2044 2045 }; 2046 2047 //Add extenstion fields of locations 2048 if (typeof place.location.extension_fields != 'undefined') { 2049 for (var extra in place.location.extension_fields) { 2050 if (!place.location.extension_fields[extra]) { 2051 replaceData['{' + extra + '}'] = ''; 2052 2053 } else { 2054 replaceData['{' + extra + '}'] = place.location.extension_fields[extra]; 2055 } 2056 } 2057 } 2058 2059 //Add extra fields of locations 2060 if (typeof place.location.extra_fields != 'undefined') { 2061 for (var extra in place.location.extra_fields) { 2062 if (!place.location.extra_fields[extra]) { 2063 replaceData['{' + extra + '}'] = ''; 2064 2065 } else { 2066 replaceData['{' + extra + '}'] = place.location.extra_fields[extra]; 2067 } 2068 } 2069 } 2070 2071 if (wpgmp_arr) { 2072 for (var n in wpgmp_arr) { 2073 replaceData["{" + n + "}"] = wpgmp_remove_last_comma(wpgmp_arr[n]); 2074 } 2075 } 2076 2077 function wpgmp_remove_last_comma(strng) { 2078 var n = strng.lastIndexOf(","); 2079 var a = strng.substring(0, n) 2080 return a; 2081 } 2082 2083 temp_listing_placeholder = temp_listing_placeholder.replace(/{[^{}]+}/g, function(match) { 2084 if (match in replaceData) { 2085 return (replaceData[match]); 2086 } else { 2087 return (""); 2088 } 2089 }); 2090 2091 2092 if (category_name == wpgmp_local.select_category ) { 2093 2094 content += temp_listing_placeholder; } 2095 } 2096 } 2097 } else { 2098 content = "<div class='wpgmp_no_locations'>" + wpgmp_local.wpgmp_location_no_results + "</div>"; 2099 } 2100 2101 2102 content += '<div id="wpgmp_pagination"></div>'; 2103 2104 $(listing_container).find(".wpgmp_categories").html(content); 2105 2106 $(listing_container).find('.wpgmp_locations').responsiveEqualHeightGrid(); 2107 2108 2109 return false;
2110 }, 2111 2112 open_infowindow: function(current_place) { 2113 var map_obj = this; 2114 $.each(this.map_data.places, function(key, place) { 2115 if (parseInt(place.id) == parseInt(current_place) && place.marker.visible === true) { 2116 place.marker.setMap(map_obj.map); 2117 if (typeof map_obj.map_data.marker_cluster != 'undefined') { 2118 map_obj.map.setZoom(parseInt(map_obj.map_data.marker_cluster.marker_zoom_level)); 2119 } 2120 place.infowindow.open(map_obj.map, place.marker); 2121 if (typeof map_obj.settings.infowindow_click_change_center != 'undefined' && map_obj.settings.infowindow_click_change_center == true) { 2122 map_obj.map.setCenter(place.marker.getPosition()); 2123 } 2124 if (typeof map_obj.settings.infowindow_click_change_zoom != 'undefined' && map_obj.settings.infowindow_click_change_zoom > 0) { 2125 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 2126 } 2127 var bounce_on_event = map_obj.settings.infowindow_bounce_animation; 2128 if (bounce_on_event == 'click') { 2129 map_obj.toggle_bounce(place.marker); 2130 } 2131 } else { 2132 place.infowindow.close(); 2133 place.marker.setAnimation(null); 2134 } 2135 }); 2136 }, 2137 2138 place_info: function(place_id) { 2139 2140 var place_obj; 2141 2142 $.each(this.places, function(index, place) { 2143 2144 if (parseInt(place.id) == parseInt(place_id)) { 2145 place_obj = place; 2146 } 2147 }); 2148 2149 return place_obj; 2150 }, 2151 2152 create_routes: function() { 2153 var map_obj = this; 2154 if (this.map_data.routes) { 2155 $.each(this.map_data.routes, function(index, routeobj) { 2156 2157 var directionsService = new google.maps.DirectionsService(); 2158 2159 var route_polyline = { 2160 strokeColor: routeobj.route_stroke_color, 2161 strokeOpacity: routeobj.route_stroke_opacity, 2162 strokeWeight: routeobj.route_stroke_weight, 2163 clickable: false 2164 }; 2165 2166 var renderer_options = { 2167 draggable: routeobj.route_marker_draggable, 2168 suppressMarkers: true, 2169 suppressInfoWindows: true, 2170 preserveViewport: true, 2171 polylineOptions: route_polyline, 2172 2173 }; 2174 2175 2176 var start = routeobj.start_location_data; 2177 var end = routeobj.end_location_data; 2178 var waypts = []; 2179 if (typeof routeobj.way_points != 'undefined') { 2180 $.each(routeobj.way_points, function(point_index, place) { 2181 waypts.push({ 2182 location: place, 2183 stopover: true 2184 }); 2185 }); 2186 } 2187 2188 var request = { 2189 origin: start, 2190 destination: end, 2191 2192 waypoints: waypts, 2193 optimizeWaypoints: routeobj.route_optimize_waypoints, 2194 2195 travelMode: eval("google.maps.TravelMode." + routeobj.route_travel_mode), 2196 unitSystem: eval("google.maps.UnitSystem." + routeobj.route_unit_system), 2197 }; 2198 2199 directionsService.route(request, function(response, status) { 2200 2201 if (status == google.maps.DirectionsStatus.OK) { 2202 directionsDisplay = new google.maps.DirectionsRenderer(renderer_options); 2203 directionsDisplay.setMap(map_obj.map); 2204 directionsDisplay.setDirections(response); 2205 directionsDisplay.setPanel($(".directions-panel-route" + routeobj.route_id + "").get(0)); 2206 2207 if (typeof routeobj.route_id != 'undefined') { 2208 /* 2209 if (typeof routeobj.route_direction_panel != 'undefined') { 2210 if (routeobj.route_direction_panel == true) { 2211 var dirpanel = $(".wpgmp_direction_panel_route" + routeobj.route_id + "").get(0); 2212 2213 dirpanel.innerHTML = ""; 2214 2215 $.each(response.routes, function(key, value) { 2216 2217 $.each(value.legs, function(key1, dir) { 2218 2219 var output = ''; 2220 2221 output += '<div class="dir_start">' + dir.start_address + '</div>'; 2222 output += '<div class="dir_summary silver">' + dir.distance.text + ' - about ' + dir.duration.text + '</div>'; 2223 output += '<table>'; 2224 for (i = 0;
2224 i < dir.steps.length; i++) { 2225 output += '<tr style="border-bottom: 1px solid silver;">'; 2226 output += '<td class="dir_row"><span class="dir_sprite ' + dir.steps[i].maneuver + '"></span></td>'; 2227 output += '<td class="dir_row">' + (i + 1) + '.</td>'; 2228 output += '<td class="dir_row">' + dir.steps[i].instructions + '</td>'; 2229 output += '<td class="dir_row" style="white-space:nowrap;">' + dir.steps[i].distance.text + '</td>'; 2230 output += '</tr>'; 2231 } 2232 output += '</table>'; 2233 output += '<div class="dir_end">' + dir.end_address + '</div>'; 2234 2235 dirpanel.innerHTML += output; 2236 2237 }); 2238 }); 2239 } 2240 } 2241 */ 2242 map_obj.route_directions[routeobj.route_id] = directionsDisplay; 2243 } 2244 } else { 2245 console.log(routeobj); 2246 console.log("" + wpgmp_local.wpgmp_route_not_avilable + ""); 2247 } 2248 }); 2249 }); 2250 } 2251 2252 }, 2253 2254 enable_drawing: function() { 2255 var map_obj = this; 2256 map_obj.drawingmanager = new google.maps.drawing.DrawingManager({ 2257 drawingMode: null, 2258 drawingControl: true, 2259 drawingControlOptions: { 2260 position: google.maps.ControlPosition.TOP_CENTER, 2261 drawingModes: [ 2262 2263 google.maps.drawing.OverlayType.CIRCLE, google.maps.drawing.OverlayType.POLYGON, google.maps.drawing.OverlayType.POLYLINE, google.maps.drawing.OverlayType.RECTANGLE 2264 2265 ] 2266 }, 2267 2268 circleOptions: { 2269 fillColor: '#003dce', 2270 strokeColor: '#003dce', 2271 strokeWeight: '1', 2272 strokeOpacity: '0.5', 2273 zindex: 1, 2274 fillOpacity: '0.5', 2275 editable: false, 2276 draggable: false 2277 }, 2278 polygonOptions: { 2279 fillColor: '#003dce', 2280 strokeColor: '#003dce', 2281 strokeWeight: '1', 2282 strokeOpacity: '0.5', 2283 zindex: 1, 2284 fillOpacity: '0.5', 2285 editable: false, 2286 draggable: false 2287 }, 2288 polylineOptions: { 2289 fillColor: '#003dce', 2290 strokeColor: '#003dce', 2291 strokeWeight: '1', 2292 strokeOpacity: '0.5', 2293 zindex: 1, 2294 fillOpacity: '0.5', 2295 editable: false, 2296 draggable: false 2297 }, 2298 rectangleOptions: { 2299 fillColor: '#003dce', 2300 strokeColor: '#003dce', 2301 strokeWeight: '1', 2302 strokeOpacity: '0.5', 2303 zindex: 1, 2304 fillOpacity: '0.5', 2305 editable: false, 2306 draggable: false 2307 } 2308 }); 2309 map_obj.drawingmanager.setMap(map_obj.map); 2310 map_obj.event_listener(map_obj.drawingmanager, 'circlecomplete', function(circle) { 2311 map_obj.wpgmp_circles.push(circle); 2312 map_obj.wpgmp_shape_complete(circle, 'circle'); 2313 }); 2314 map_obj.event_listener(map_obj.drawingmanager, 'polygoncomplete', function(polygon) { 2315 map_obj.wpgmp_polygons.push(polygon);
2316 map_obj.wpgmp_shape_complete(polygon, 'polygon'); 2317 }); 2318 map_obj.event_listener(map_obj.drawingmanager, 'polylinecomplete', function(polyline) { 2319 map_obj.wpgmp_polylines.push(polyline); 2320 map_obj.wpgmp_shape_complete(polyline, 'polyline'); 2321 }); 2322 map_obj.event_listener(map_obj.drawingmanager, 'rectanglecomplete', function(rectangle) { 2323 map_obj.wpgmp_rectangles.push(rectangle); 2324 map_obj.wpgmp_shape_complete(rectangle, 'rectangle'); 2325 }); 2326 }, 2327 2328 create_polygon: function() { 2329 2330 var map_obj = this; 2331 2332 $.each(this.map_data.shapes.shape.polygons, function(index, polygon) { 2333 var path = []; 2334 $.each(polygon.cordinates, function(ind, cordinate) { 2335 var latlng = cordinate.split(','); 2336 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 2337 }); 2338 2339 polygon.reference = new google.maps.Polygon({ 2340 paths: path, 2341 strokeColor: polygon.settings.stroke_color, 2342 strokeOpacity: polygon.settings.stroke_opacity, 2343 strokeWeight: polygon.settings.stroke_weight, 2344 fillColor: polygon.settings.fill_color, 2345 fillOpacity: polygon.settings.fill_opacity 2346 }); 2347 if (typeof map_obj.map_data.shapes != 'undefined') { 2348 2349 if (map_obj.map_data.shapes.drawing_editable === true) { 2350 map_obj.event_listener(polygon.reference, "click", function() { 2351 map_obj.setSelection(polygon.reference); 2352 map_obj.get_shapes_options(polygon.reference, 'polygon'); 2353 }); 2354 2355 2356 } else if (polygon.events.url !== '' || polygon.events.message !== '') { 2357 2358 map_obj.event_listener(polygon.reference, "click", function() { 2359 2360 if (polygon.events.url === '' && polygon.events.message !== '') { 2361 var bounds = new google.maps.LatLngBounds(); 2362 polygon.reference.getPath().forEach(function(element, index) { 2363 bounds.extend(element); 2364 }); 2365 $.each(map_obj.places, function(key, place) { 2366 place.infowindow.close(); 2367 }); 2368 map_obj.opened_info.setPosition(bounds.getCenter()); 2369 map_obj.opened_info.setContent(polygon.events.message); 2370 map_obj.opened_info.open(map_obj.map, this); 2371 2372 } else { 2373 window.location = polygon.events.url; 2374 } 2375 2376 }); 2377 2378 } 2379 } 2380 polygon.reference.setMap(map_obj.map); 2381 2382 map_obj.wpgmp_polygons.push(polygon.reference); 2383 map_obj.wpgmp_shape_events.push({ 2384 'shape': polygon.reference, 2385 'url': polygon.events.url, 2386 'message': polygon.events.message 2387 }); 2388 }); 2389 }, 2390 2391 create_polyline: function() { 2392 2393 var map_obj = this; 2394 2395 2396 $.each(this.map_data.shapes.shape.polylines, function(index, polyline) { 2397 var path = []; 2398
2399 if (typeof polyline.cordinates != 'undefined') { 2400 $.each(polyline.cordinates, function(ind, cordinate) { 2401 var latlng = cordinate.split(','); 2402 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 2403 }); 2404 2405 polyline.reference = new google.maps.Polyline({ 2406 path: path, 2407 strokeColor: polyline.settings.stroke_color, 2408 strokeOpacity: polyline.settings.stroke_opacity, 2409 strokeWeight: polyline.settings.stroke_weight 2410 }); 2411 2412 2413 2414 if (typeof map_obj.map_data.shapes != 'undefined') { 2415 2416 if (map_obj.map_data.shapes.drawing_editable === true) { 2417 2418 map_obj.event_listener(polyline.reference, "click", function() { 2419 map_obj.setSelection(polyline.reference); 2420 map_obj.get_shapes_options(polyline.reference, 'polyline'); 2421 }); 2422 2423 2424 } else if (polyline.events.url !== '' || polyline.events.message !== '') { 2425 2426 map_obj.event_listener(polyline.reference, "click", function() { 2427 2428 2429 if (polyline.events.url === '' && polyline.events.message !== '') { 2430 var bounds = new google.maps.LatLngBounds(); 2431 polyline.reference.getPath().forEach(function(element, index) { 2432 bounds.extend(element); 2433 }); 2434 $.each(map_obj.places, function(key, place) { 2435 place.infowindow.close(); 2436 }); 2437 map_obj.opened_info.setPosition(bounds.getCenter()); 2438 map_obj.opened_info.setContent(polyline.events.message); 2439 map_obj.opened_info.open(map_obj.map, this); 2440 2441 } else if (polyline.events.url !== '') { 2442 window.location = polyline.events.url; 2443 } 2444 2445 }); 2446 2447 2448 } 2449 } 2450 }
2451 if (typeof polyline.reference != 'undefined') { 2452 polyline.reference.setMap(map_obj.map); 2453 map_obj.wpgmp_polylines.push(polyline.reference); 2454 map_obj.wpgmp_shape_events.push({ 2455 'shape': polyline.reference, 2456 'url': polyline.events.url, 2457 'message': polyline.events.message 2458 }); 2459 } 2460 }); 2461 }, 2462 event_listener: function(obj, type, func) { 2463 google.maps.event.addListener(obj, type, func); 2464 }, 2465 create_circle: function() { 2466 2467 var map_obj = this; 2468 $.each(this.map_data.shapes.shape.circles, function(index, circle) { 2469 var path; 2470 $.each(circle.cordinates, function(ind, cordinate) { 2471 var latlng = cordinate.split(','); 2472 path = new google.maps.LatLng(latlng[0], latlng[1]); 2473 }); 2474 2475 circle.reference = new google.maps.Circle({ 2476 fillColor: circle.settings.fill_color, 2477 fillOpacity: circle.settings.fill_opacity, 2478 strokeColor: circle.settings.stroke_color, 2479 strokeOpacity: circle.settings.stroke_opacity, 2480 strokeWeight: circle.settings.stroke_weight, 2481 center: path, 2482 radius: parseInt(circle.settings.radius) 2483 }); 2484 2485 if (typeof map_obj.map_data.shapes != 'undefined') { 2486 2487 if (map_obj.map_data.shapes.drawing_editable === true) { 2488 map_obj.event_listener(circle.reference, "click", function() { 2489 map_obj.setSelection(circle.reference); 2490 map_obj.get_shapes_options(circle.reference, 'circle'); 2491 }); 2492 2493 } else if (circle.events.url !== '' || circle.events.message !== '') { 2494 map_obj.event_listener(circle.reference, "click", function() { 2495 2496 if (circle.events.url === '' && circle.events.message !== '') { 2497 $.each(map_obj.places, function(key, place) { 2498 place.infowindow.close(); 2499 }); 2500 map_obj.opened_info.setPosition(circle.reference.getCenter()); 2501 map_obj.opened_info.setContent(circle.events.message); 2502 map_obj.opened_info.open(map_obj.map, this); 2503 2504 } else if (circle.events.url !== '') { 2505 window.location = circle.events.url; 2506 } 2507 2508 2509 }); 2510 2511 } 2512 } 2513 2514 2515 circle.reference.setMap(map_obj.map); 2516 map_obj.wpgmp_circles.push(circle.reference); 2517 map_obj.wpgmp_shape_events.push({ 2518 'shape': circle.reference, 2519 'url': circle.events.url, 2520 'message': circle.events.message 2521 }); 2522 }); 2523 }, 2524 2525 create_rectangle: function() { 2526 2527 var map_obj = this; 2528 $.each(this.map_data.shapes.shape.rectangles, function(index, rectangle) { 2529 var left_latlng = rectangle.cordinates[0].split(','); 2530 var right_latlng = rectangle.cordinates[1].split(','); 2531 2532 var path = new google.maps.LatLngBounds(new google.maps.LatLng(left_latlng[0], left_latlng[1]), new google.maps.LatLng(right_latlng[0], right_latlng[1])); 2533 2534 rectangle.reference = new google.maps.Rectangle({ 2535 bounds: path, 2536 fillColor: rectangle.settings.fill_color, 2537 fillOpacity: rectangle.settings.fill_opacity, 2538 strokeColor: rectangle.settings.stroke_color, 2539 strokeOpacity: rectangle.settings.stroke_opacity, 2540 strokeWeight: rectangle.settings.stroke_weight 2541 }); 2542 2543 if (typeof map_obj.map_data.shapes != 'undefined') { 2544 2545 if (map_obj.map_data.shapes.drawing_editable === true) { 2546 2547 map_obj.event_listener(rectangle.reference, "click", function() { 2548 2549 map_obj.setSelection(rectangle.reference); 2550 map_obj.get_shapes_options(rectangle.reference, 'rectangle'); 2551 2552 }); 2553 2554 } else if (rectangle.events.url !== '' || rectangle.events.message !== '') { 2555 map_obj.event_listener(rectangle.reference, "click", function() { 2556 2557 if (rectangle.events.url === '' && rectangle.events.message !== '') { 2558 $.each(map_obj.places, function(key, place) { 2559 place.infowindow.close(); 2560 }); 2561 map_obj.opened_info.setPosition(rectangle.reference.getBounds().getCenter()); 2562 map_obj.opened_info.setContent(rectangle.events.message); 2563 map_obj.opened_info.open(map_obj.map, this); 2564 } else if (rectangle.events.url !== '') { 2565 window.location = rectangle.events.url; 2566 } 2567 2568 }); 2569 2570 } 2571 } 2572
2573 rectangle.reference.setMap(map_obj.map); 2574 map_obj.wpgmp_rectangles.push(rectangle.reference); 2575 map_obj.wpgmp_shape_events.push({ 2576 'shape': rectangle.reference, 2577 'url': rectangle.events.url, 2578 'message': rectangle.events.message, 2579 }); 2580 }); 2581 }, 2582 2583 get_shapes_options: function(shape, type) { 2584 $(".hiderow").show(); 2585 $("input[name='shape_fill_color']").val(shape.fillColor); 2586 $("input[name='shape_fill_color']").parent().parent().find('.wp-color-result').css('background-color', shape.fillColor); 2587 $("select[name='shape_fill_opacity']").val(shape.fillOpacity); 2588 $("input[name='shape_stroke_color']").val(shape.strokeColor); 2589 $("input[name='shape_stroke_color']").parent().parent().find('.wp-color-result').css('background-color', shape.strokeColor); 2590 $("select[name='shape_stroke_opacity']").val(shape.strokeOpacity); 2591 $("select[name='shape_stroke_weight']").val(shape.strokeWeight); 2592 $("textarea[name='shape_path']").parent().hide(); 2593 $("input[name='shape_radius']").parent().hide(); 2594 $("input[name='shape_center']").parent().hide(); 2595 $("input[name='shape_northeast']").parent().hide(); 2596 $("input[name='shape_southwest']").parent().hide(); 2597 2598 var all_shape_events = this.wpgmp_shape_events; 2599 $.each(all_shape_events, function(i, shape_event) { 2600 2601 if (shape_event.shape == shape) { 2602 $("input[name='shape_click_url']").val(shape_event.url); 2603 $("textarea[name='shape_click_message']").val(shape_event.message); 2604 } 2605 }); 2606 if (type == 'circle') { 2607 $("input[name='shape_radius']").parent().show(); 2608 $("input[name='shape_radius']").val(shape.getRadius()); 2609 $("input[name='shape_center']").parent().show(); 2610 $("input[name='shape_center']").val(shape.getCenter().lat() + ',' + shape.getCenter().lng()); 2611 2612 } else if (type == 'rectangle') { 2613 $("input[name='shape_northeast']").parent().show(); 2614 $("input[name='shape_northeast']").val(shape.getBounds().getNorthEast().lat() + ',' + shape.getBounds().getNorthEast().lng()); 2615 $("input[name='shape_southwest']").parent().show(); 2616 $("input[name='shape_southwest']").val(shape.getBounds().getSouthWest
2616().lat() + ',' + shape.getBounds().getSouthWest().lng()); 2617 2618 } else { 2619 var polygon_cordinate = []; 2620 2621 var cordinates = shape.getPath(); 2622 2623 cordinates.forEach(function(latlng, index) { 2624 2625 var latlngin = [latlng.lat(), latlng.lng()]; 2626 2627 if (latlng.lat() !== "" && latlng.lng() !== "") 2628 polygon_cordinate.push(latlngin); 2629 2630 }); 2631 $("textarea[name='shape_path']").parent().show(); 2632 $("textarea[name='shape_path']").val(polygon_cordinate.join(' ')); 2633 } 2634 }, 2635 2636 set_shapes_options: function(shape) { 2637 var polyOptions2 = { 2638 fillColor: $("input[name='shape_fill_color']").val(), 2639 fillOpacity: $("select[name='shape_fill_opacity']").val(), 2640 strokeColor: $("input[name='shape_stroke_color']").val(), 2641 strokeOpacity: $("select[name='shape_stroke_opacity']").val(), 2642 strokeWeight: $("select[name='shape_stroke_weight']").val(), 2643 }; 2644 shape.setOptions(polyOptions2); 2645 var all_shape_events = this.wpgmp_shape_events; 2646 $.each(all_shape_events, function(i, shape_event) { 2647 if (shape_event.shape == shape) { 2648 shape_event.url = $("input[name='shape_click_url']").val(); 2649 shape_event.message = $("textarea[name='shape_click_message']").val(); 2650 } 2651 }); 2652 2653 }, 2654 2655 wpgmp_save_shapes: function(allcordinate) { 2656 $("input[name='shapes_values']").val(allcordinate.join("|")); 2657 }, 2658 2659 wpgmp_shape_complete: function(shape, type) { 2660 var map_obj = this; 2661 map_obj.setSelection(shape); 2662 map_obj.drawingmanager.setDrawingMode(null); 2663 if (typeof map_obj.map_data.shapes != 'undefined') { 2664 2665 if (map_obj.map_data.shapes.drawing_editable === true) { 2666 2667 map_obj.event_listener(shape, 'click', function() { 2668 map_obj.setSelection(shape); 2669 map_obj.get_shapes_options(shape, type); 2670 }); 2671 2672 map_obj.wpgmp_shape_events.push({ 2673 'shape': shape, 2674 'url': '', 2675 'message': '' 2676 }); 2677 } 2678 2679 } 2680 2681 }, 2682 2683 Â wpgmp_save_polylines: function() { 2684 2685 var all_polylines = []; 2686 var map_obj = this; 2687 var wpgmp_polylines = map_obj.wpgmp_polylines; 2688 var all_shape_events = map_obj.wpgmp_shape_events; 2689 2690 for (var i = 0; i < wpgmp_polylines.length; i++) { 2691 2692 var polyline_cordinate = []; 2693 2694 var cordinates = wpgmp_polylines[i].getPath(); 2695 2696 var settings = wpgmp_polylines[i].strokeWeight + "," + wpgmp_polylines[i].strokeOpacity + "," + wpgmp_polylines[i].strokeColor; 2697 var events = ""; 2698 $.each(all_shape_events, function(j, shape_event) { 2699 if (shape_event.shape == wpgmp_polylines[i]) { 2700 events = shape_event.url + "***" + shape_event.message; 2701 } 2702 }); 2703 2704 cordinates.forEach(function(latlng, index) { 2705 2706 var latlngin = [latlng.lat(), latlng.lng()]; 2707 polyline_cordinate.push(latlngin); 2708 2709 } 2710 2711 ); 2712 2713 all_polylines.push(polyline_cordinate.join("----") + "..." + settings + "..." + events); 2714 2715 } 2716 return all_polylines; 2717 2718 2719 }, 2720 2721 2722 wpgmp_save_polygons: function() { 2723 2724 var all_polygons = []; 2725 var map_obj = this; 2726 var wpgmp_polygons = map_obj.wpgmp_polygons; 2727 var all_shape_events = map_obj.wpgmp_shape_events; 2728 2729 for (var i = 0; i < wpgmp_polygons.length; i++) { 2730 2731 var polygon_cordinate = []; 2732 2733 var cordinates = wpgmp_polygons[i].getPath(); 2734 2735 var settings = wpgmp_polygons[i].strokeWeight + "," + wpgmp_polygons[i].strokeOpacity + "," + wpgmp_polygons[i].strokeColor + "," + wpgmp_polygons[i].fillColor + "," + wpgmp_polygons[i].fillOpacity; 2736 2737 var events = ""; 2738 $.each(all_shape_events, function(j, shape_event) { 2739 if (shape_event.shape == wpgmp_polygons[i]) { 2740 events = shape_event.url + "***" + shape_event.message; 2741 } 2742 }); 2743
2744 cordinates.forEach(function(latlng, index) { 2745 2746 var latlngin = [latlng.lat(), latlng.lng()]; 2747 2748 if (latlng.lat() !== "" && latlng.lng() !== "") 2749 polygon_cordinate.push(latlngin); 2750 2751 } 2752 2753 ); 2754 2755 all_polygons.push(polygon_cordinate.join("----") + "..." + settings + "..." + events); 2756 2757 } 2758 2759 return all_polygons; 2760 2761 }, 2762 2763 2764 wpgmp_save_circles: function() { 2765 2766 var all_circles = []; 2767 var map_obj = this; 2768 var wpgmp_circles = map_obj.wpgmp_circles; 2769 var all_shape_events = map_obj.wpgmp_shape_events; 2770 2771 for (var i = 0; i < wpgmp_circles.length; i++) { 2772 2773 var circle_cordinate = []; 2774 2775 var latlng = wpgmp_circles[i].getCenter(); 2776 2777 var settings = wpgmp_circles[i].strokeWeight + "," + wpgmp_circles[i].strokeOpacity + "," + wpgmp_circles[i].strokeColor + "," + wpgmp_circles[i].fillColor + "," + wpgmp_circles[i].fillOpacity + "," + wpgmp_circles[i].getRadius(); 2778 2779 var events = ""; 2780 $.each(all_shape_events, function(j, shape_event) { 2781 if (shape_event.shape == wpgmp_circles[i]) { 2782 events = shape_event.url + "***" + shape_event.message; 2783 } 2784 }); 2785 2786 2787 var latlngin = [latlng.lat(), latlng.lng()]; 2788 2789 if (latlng.lat() !== "" && latlng.lng() !== "") 2790 circle_cordinate.push(latlngin); 2791 2792 all_circles.push(circle_cordinate.join("----") + "..." + settings + "..." + events); 2793 2794 } 2795 2796 return all_circles; 2797 2798 }, 2799 2800 wpgmp_save_rectangles: function() { 2801 2802 var all_rectangles = []; 2803 var map_obj = this; 2804 var wpgmp_rectangles = map_obj.wpgmp_rectangles; 2805 var all_shape_events = map_obj.wpgmp_shape_events; 2806 for (var i = 0; i < wpgmp_rectangles.length; i++) { 2807 2808 var rectangle_cordinate = []; 2809 2810 2811 2812 var settings = wpgmp_rectangles[i].strokeWeight + "," + wpgmp_rectangles[i].strokeOpacity + "," + wpgmp_rectangles[i].strokeColor + "," + wpgmp_rectangles[i].fillColor + "," + wpgmp_rectangles[i].fillOpacity; 2813 2814 var events = ""; 2815 $.each(all_shape_events, function(j, shape_event) { 2816 if (shape_event.shape == wpgmp_rectangles[i]) { 2817 events = shape_event.url + "***" + shape_event.message; 2818 } 2819 }); 2820 2821 var latlng = wpgmp_rectangles[i].getBounds().getSouthWest
2821(); 2822 2823 2824 2825 var latlngin = [latlng.lat(), latlng.lng()]; 2826 2827 if (latlng.lat() !== "" && latlng.lng() !== "") 2828 rectangle_cordinate.push(latlngin); 2829 2830 2831 2832 latlng = wpgmp_rectangles[i].getBounds().getNorthEast(); 2833 2834 2835 var latlngin = [latlng.lat(), latlng.lng()]; 2836 2837 if (latlng.lat() !== "" && latlng.lng() !== "") 2838 rectangle_cordinate.push(latlngin); 2839 2840 all_rectangles.push(rectangle_cordinate.join("----") + "..." + settings + "..." + events); 2841 2842 } 2843 2844 return all_rectangles; 2845 2846 }, 2847 2848 set_kml_layer: function() { 2849 2850 var map_obj = this.map; 2851 2852 $.each(this.map_data.kml_layer.kml_layers_links, function(index, link) { 2853 2854 var kmlLayerOptions = { 2855 url: link, 2856 map: map_obj, 2857 preserveViewport: true 2858 2859 }; 2860 2861 new google.maps.KmlLayer(kmlLayerOptions); 2862 }); 2863 }, 2864 2865 set_fusion_layer: function() { 2866 2867 var fusionlayer = new google.maps.FusionTablesLayer({ 2868 query: { 2869 select: this.map_data.fusion_layer.fusion_table_select, 2870 from: this.map_data.fusion_layer.fusion_table_from 2871 }, 2872 heatmap: { 2873 enabled: this.map_data.fusion_layer.fusion_heat_map 2874 }, 2875 styles: [{ 2876 markerOptions: { 2877 iconName: this.map_data.fusion_layer.fusion_icon_name 2878 }, 2879 polygonOptions: { 2880 fillColor: '#00FF00', 2881 fillOpacity: 0.3 2882 } 2883 }] 2884 }); 2885 2886 fusionlayer.setMap(this.map); 2887 }, 2888 2889 set_marker_cluster: function() { 2890 var map_obj = this; 2891 var markers = []; 2892 var clusterStyles = [{ 2893 textColor: 'black', 2894 url: map_obj.map_data.marker_cluster.icon, 2895 height: 32, 2896 width: 33 2897 }]; 2898 $.each(this.places, function(index, place) { 2899 if (place.marker.visible == true) { 2900 markers.push(place.marker); 2901 } 2902 2903 }); 2904 2905 if (map_obj.map_data.marker_cluster.apply_style === true) { 2906 if (!map_obj.markerClusterer) { 2907 map_obj.markerClusterer = new MarkerClusterer(map_obj.map, {}, { 2908 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 2909 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 2910 styles: clusterStyles 2911 2912 }); 2913 } 2914 2915 map_obj.markerClusterer.clearMarkers(); 2916 map_obj.markerClusterer.addMarkers(markers); 2917 2918 google.maps.event.addListener(map_obj.markerClusterer, 'mouseover', function(c) { 2919 2920 c.clusterIcon_.div_.firstChild.src = map_obj.map_data.marker_cluster.hover_icon 2921 }); 2922 2923 google.maps.event.addListener(map_obj.markerClusterer, 'mouseout', function(c) { 2924 c.clusterIcon_.div_.firstChild.src = map_obj.map_data.marker_cluster.icon 2925 }); 2926 2927 } else { 2928 if (!map_obj.markerClusterer) { 2929 map_obj.markerClusterer = new MarkerClusterer(map_obj.map, {}, { 2930 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 2931 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 2932 imagePath: map_obj.map_data.marker_cluster.image_path, 2933 }); 2934 } 2935 2936 map_obj.markerClusterer.clearMarkers(); 2937 map_obj.markerClusterer.addMarkers(markers); 2938 2939 2940 } 2941 2942 }, 2943 2944 set_panning_control: function() { 2945 2946 var panning_data = this.map_data.panning_control; 2947 var panning_map_obj = this.map; 2948 var map_obj = this; 2949 2950 var strictBounds = new google.maps.LatLngBounds( 2951 new google.maps.LatLng(panning_data.from_latitude, panning_data.from_longitude), 2952 new google.maps.LatLng(panning_data.to_latitude, panning_data.to_longitude) 2953 ); 2954 2955 google.maps.event.addListener(panning_map_obj, "dragend", function() { 2956 2957 if (strictBounds.contains(panning_map_obj.getCenter())) return; 2958 2959 var c = panning_map_obj.getCenter(), 2960 x = c.lng(), 2961 y = c.lat(), 2962 maxX = strictBounds.getNorthEast().lng(), 2963 maxY = strictBounds.getNorthEast().lat(),
2964 minX = strictBounds.getSouthWest().lng(), 2965 minY = strictBounds.getSouthWest().lat(); 2966 2967 if (x < minX) x = minX; 2968 if (x > maxX) x = maxX; 2969 if (y < minY) y = minY; 2970 if (y > maxY) y = maxY; 2971 2972 panning_map_obj.setCenter(new google.maps.LatLng(y, x)); 2973 }); 2974 2975 google.maps.event.addListener(panning_map_obj, "zoom_changed", function() { 2976 if (panning_map_obj.getZoom() < panning_data.zoom_level) { 2977 panning_map_obj.setZoom(parseInt(map_obj.settings.zoom)); 2978 } 2979 }); 2980 }, 2981 2982 set_visual_refresh: function() { 2983 2984 google.maps.visualRefresh = true; 2985 }, 2986 2987 set_45_imagery: function() { 2988 //this.map.setTilt(45); 2989 }, 2990 2991 set_overlay: function() { 2992 2993 this.map.overlayMapTypes.insertAt(0, new overlay_generator(new google.maps.Size(this.map_data.overlay_setting.width, this.map_data.overlay_setting.height), this.map_data.overlay_setting)); 2994 }, 2995 2996 set_bicyle_layer: function() { 2997 2998 var bikeLayer = new google.maps.BicyclingLayer(); 2999 bikeLayer.setMap(this.map); 3000 }, 3001 3002 set_traffic_layer: function() { 3003 3004 var traffic_layer = new google.maps.TrafficLayer(); 3005 traffic_layer.setMap(this.map); 3006 }, 3007 3008 set_panoramic_layer: function() { 3009 3010 var panoramic_layer = new google.maps.panoramio.PanoramioLayer(); 3011 panoramic_layer.setMap(this.map); 3012 }, 3013 3014 set_transit_layer: function() { 3015 3016 var transit_layer = new google.maps.TransitLayer(); 3017 transit_layer.setMap(this.map); 3018 }, 3019 3020 3021 set_weather_layer: function() { 3022 3023 var weatherLayer = new google.maps.weather.WeatherLayer({ 3024 windSpeedUnit: eval('google.maps.weather.WindSpeedUnit.' + this.map_data.weather_layer.wind_unit), 3025 temperatureUnits: eval('google.maps.weather.TemperatureUnit.' + this.map_data.weather_layer.temperature_unit) 3026 }); 3027 3028 weatherLayer.setMap(this.map); 3029 var cloudLayer = new google.maps.weather.CloudLayer(); 3030 cloudLayer.setMap(this.map); 3031 }, 3032 3033 set_streetview: function(latlng) { 3034 3035 var panoOptions = { 3036 position: latlng, 3037 addressControlOptions: { 3038 position: google.maps.ControlPosition.BOTTOM_CENTER 3039 }, 3040 linksControl: this.map_data.street_view.links_control, 3041 panControl: this.map_data.street_view.street_view_pan_control, 3042 zoomControlOptions: { 3043 style: google.maps.ZoomControlStyle.SMALL 3044 }, 3045 enableCloseButton: this.map_data.street_view.street_view_close_button 3046 }; 3047 if (this.map_data.street_view.pov_heading && this.map_data.street_view.pov_pitch) { 3048 panoOptions['pov'] = { 3049 heading: parseInt(this.map_data.street_view.pov_heading), 3050 pitch: parseInt(this.map_data.street_view.pov_pitch) 3051 }; 3052 } 3053 var panorama = new google.maps.StreetViewPanorama(this.element, panoOptions); 3054 }, 3055 3056 map_loaded: function() { 3057 3058 var map_obj = this; 3059 3060 var gmap = map_obj.map; 3061 3062 google.maps.event.addListenerOnce(gmap, 'idle', function() { 3063 3064 var center = gmap.getCenter(); 3065 google.maps.event.trigger(gmap, 'resize'); 3066 gmap.setCenter(center); 3067 3068 }); 3069 3070 if (map_obj.settings.center_by_nearest === true) { 3071 map_obj.center_by_nearest(); 3072 } 3073 if (map_obj.settings.close_infowindow_on_map_click === true) { 3074 google.maps.event.addListener(gmap, "click", function(event) { 3075 $.each(map_obj.places, function(key, place) { 3076 place.infowindow.close(); 3077 place.marker.setAnimation(null); 3078 }); 3079 }); 3080 } 3081 3082 }, 3083 resize_map: function() { 3084 var map_obj = this; 3085 var gmap = map_obj.map; 3086 var zoom = gmap.getZoom(); 3087 var center = gmap.getCenter(); 3088 google.maps.event.trigger(this.map, 'resize'); 3089 gmap.setZoom(zoom); 3090 gmap.setCenter(center); 3091 }, 3092 responsive_map: function() { 3093 3094 var map_obj = this; 3095 3096 var gmap = map_obj.map; 3097 3098 google.maps.event.addDomListener(window, "resize", function() { 3099 3100 var zoom = gmap.getZoom(); 3101 var center = gmap.getCenter(); 3102 3103 google.maps.event.trigger(gmap, "resize"); 3104 gmap.setZoom(zoom); 3105 gmap.setCenter(center); 3106 gmap.getBounds(); 3107 3108 }); 3109 3110 }, 3111 3112 create_markers: function() { 3113 3114 var map_obj = this; 3115 var places = map_obj.map_data.places; 3116 var temp_listing_placeholder; 3117 var replaceData; 3118 var remove_keys = []; 3119 $.each(places, function(key, place) { 3120 3121 if (place.location.lat && place.location.lng) { 3122 if (typeof place.categories == 'undefined') { 3123 place.categories = {}; 3124 } 3125 place.marker = new google.maps.Marker({ 3126 position: new google.maps.LatLng( 3127 parseFloat(place.location.lat), 3128 parseFloat(place.location.lng) 3129 ), 3130 icon: place.location.icon, 3131 url: place.url, 3132 draggable: place.location.draggable, 3133 map: map_obj.map, 3134 clickable: place.location.infowindow_disable, 3135 }); 3136 3137 if (map_obj.settings.infowindow_drop_animation === true) { 3138 place.marker.setAnimation(google.maps.Animation.DROP); 3139 } 3140 3141 if (map_obj.settings.infowindow_filter_only === true) { 3142 place.marker.visible = false;
3143 place.marker.setVisible(false); 3144 } 3145 // bind event to marker 3146 if (map_obj.map_data.page == 'edit_location') 3147 map_obj.marker_bind(place.marker); 3148 var location_categories = []; 3149 if (typeof place.categories != 'undefined') { 3150 for (var cat in place.categories) { 3151 location_categories.push(place.categories[cat].name); 3152 } 3153 } 3154 var content = ''; 3155 if (map_obj.settings.infowindow_setting && place.source != 'post') { 3156 replaceData = { 3157 "{marker_id}": place.id, 3158 "{marker_title}": place.title.substr(2), 3159 "{marker_address}": place.address, 3160 "{marker_latitude}": place.location.lat, 3161 "{marker_longitude}": place.location.lng, 3162 "{marker_city}": place.location.city, 3163 "{marker_state}": place.location.state, 3164 "{marker_country}": place.location.country, 3165 "{marker_postal_code}": place.location.postal_code, 3166 "{marker_zoom}": place.location.zoom, 3167 "{marker_icon}": place.location.icon, 3168 "{marker_category}": location_categories.join(','), 3169 "{marker_message}": place.content 3170 }; 3171 3172 //Add extenstion fields of locations 3173 if (typeof place.location.extension_fields != 'undefined') { 3174 for (var extra in place.location.extension_fields) { 3175 if (!place.location.extension_fields[extra]) { 3176 replaceData['{' + extra + '}'] = ''; 3177 } else { 3178 replaceData['{' + extra + '}'] = place.location.extension_fields[extra]; 3179 } 3180 } 3181 } 3182 3183 //Add extra fields of locations 3184 if (typeof place.location.extra_fields != 'undefined') { 3185 for (var extra in place.location.extra_fields) { 3186 if (!place.location.extra_fields[extra]) { 3187 replaceData['{' + extra + '}'] = ''; 3188 } else { 3189 replaceData['{' + extra + '}'] = place.location.extra_fields[extra]; 3190 } 3191 } 3192 } 3193 var temp_listing_placeholder = map_obj.settings.infowindow_setting.replace(/{[^{}]+}/g, function(match) { 3194 if (match in replaceData) { 3195 return (replaceData[match]); 3196 } else { 3197 return (""); 3198 } 3199 }); 3200 3201 content = temp_listing_placeholder; 3202 } else if (place.source == 'post') { 3203 content = place.infowindow_content; 3204 } 3205 if (content === "") { 3206 content = '<div class="wpgmp_infowindow">' + place.content + '</div>'; 3207 } 3208 place.infowindow = new google.maps.InfoWindow({ 3209 content: content 3210 }); 3211 if (place.location.infowindow_default_open === true) { 3212 map_obj.openInfoWindow(place); 3213 } else if (map_obj.settings.default_infowindow_open === true) { 3214 map_obj.openInfoWindow(place); 3215 } 3216 var on_event = map_obj.settings.infowindow_open_event; 3217 var bounce_on_event = map_obj.settings.infowindow_bounce_animation; 3218 map_obj.event_listener(place.marker, on_event, function() { 3219 $.each(map_obj.places, function(key, prev_place) { 3220 prev_place.infowindow.close(); 3221 prev_place.marker.setAnimation(null); 3222 }); 3223 map_obj.openInfoWindow(place); 3224 if (bounce_on_event == 'click') { 3225 map_obj.toggle_bounce(place.marker); 3226 } 3227 }); 3228 if (bounce_on_event == 'mouseover' && on_event != 'mouseover') { 3229 map_obj.event_listener(place.marker, 'mouseover', function() { 3230 place.marker.setAnimation(google.maps.Animation.BOUNCE); 3231 }); 3232 3233 map_obj.event_listener(place.marker, 'mouseout', function() { 3234 place.marker.setAnimation(null); 3235 }); 3236 } 3237 3238 if (bounce_on_event != '') { 3239 google.maps.event.addListener(place.infowindow, 'closeclick', function() { 3240 place.marker.setAnimation(null); 3241 }); 3242 } 3243 3244 map_obj.places.push(place); 3245 } else { 3246 remove_keys.push(key); 3247 } 3248 }); 3249 $.each(remove_keys, function(index, value) { 3250 places.splice(value, 1); 3251 }); 3252 3253 }, 3254 toggle_bounce: function(marker) { 3255 if (marker.getAnimation() !== null) { 3256 marker.setAnimation(null); 3257 } else { 3258 marker.setAnimation(google.maps.Animation.BOUNCE); 3259 } 3260 }, 3261 display_markers: function() { 3262 3263 var map_obj = this; 3264 map_obj.show_places = []; 3265 map_obj.categories = []; 3266 var categories = {}; 3267 for (var i = 0; i < map_obj.places.length; i++) {
3268 map_obj.places[i].marker.setMap(map_obj.map); 3269 if (map_obj.places[i].marker.visible === true) { 3270 map_obj.show_places.push(this.places[i]); 3271 } 3272 3273 if (typeof map_obj.places[i].categories != 'undefined') { 3274 $.each(map_obj.places[i].categories, function(index, category) { 3275 3276 if (typeof categories[category.name] == 'undefined') { 3277 categories[category.name] = category; 3278 } 3279 }); 3280 } 3281 } 3282 3283 this.categories = categories; 3284 }, 3285 show_center_circle: function() { 3286 3287 var map_obj = this; 3288 map_obj.set_center_circle = new google.maps.Circle({ 3289 map: map_obj.map, 3290 center: map_obj.map.getCenter(), 3291 fillColor: map_obj.settings.center_circle_fillcolor, 3292 fillOpacity: map_obj.settings.center_circle_fillopacity, 3293 strokeColor: map_obj.settings.center_circle_strokecolor, 3294 strokeOpacity: map_obj.settings.center_circle_strokeopacity, 3295 strokeWeight: map_obj.settings.center_circle_strokeweight, 3296 radius: 5 * 1000 3297 }); 3298 3299 }, 3300 show_center_marker: function() { 3301 3302 var map_obj = this; 3303 var clickable = false; 3304 if (map_obj.settings.center_marker_infowindow != '') { 3305 clickable = true; 3306 } 3307 3308 map_obj.map_center_marker = new google.maps.Marker({ 3309 position: map_obj.map.getCenter(), 3310 title: map_obj.settings.center_marker_infowindow, 3311 map: map_obj.map, 3312 icon: map_obj.settings.center_marker_icon, 3313 clickable: clickable 3314 }); 3315 if (typeof map_obj.map_center_info == 'undefined') { 3316 map_obj.map_center_info = new google.maps.InfoWindow(); 3317 } 3318 if (map_obj.settings.center_marker_infowindow != '') { 3319 google.maps.event.addListener(map_obj.map_center_marker, 'click', function() { 3320 map_obj.map_center_info.setPosition(map_obj.map.getCenter()); 3321 map_obj.map_center_info.setContent(map_obj.settings.center_marker_infowindow); 3322 map_obj.map_center_info.open(map_obj.map, this); 3323 3324 }); 3325 } 3326 }, 3327 center_by_nearest: function() { 3328 var map_obj = this; 3329 this.get_current_location(function(user_position) { 3330 if (!map_obj.user_location_marker) { 3331 map_obj.user_location_marker = new google.maps.Marker({ 3332 position: user_position, 3333 title: wpgmp_local.center_location_message, 3334 map: map_obj.map, 3335 icon: map_obj.settings.marker_default_icon 3336 }); 3337 3338 } 3339 map_obj.user_location_marker.setVisible(true); 3340 map_obj.map.setCenter(user_position); 3341 if (map_obj.settings.show_center_circle === true) { 3342 map_obj.show_center_circle(); 3343 } 3344 }); 3345 }, 3346 3347 get_current_location: function(success_func, error_func) { 3348 3349 var map = this; 3350 3351 if (typeof map.user_location == 'undefined') { 3352 3353 navigator.geolocation.getCurrentPosition(function(position) { 3354 map.user_location = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 3355 3356 if (success_func) 3357 success_func(map.user_location); 3358 3359 }, function(ErrorPosition) { 3360 3361 if (error_func) 3362 error_func(ErrorPosition); 3363 3364 }, { 3365 enableHighAccuracy: true, 3366 timeout: 5000, 3367 maximumAge: 0 3368 }); 3369 } else { 3370 if (success_func) 3371 success_func(map.user_location); 3372 } 3373 }, 3374 3375 openInfoWindow: function(place) { 3376 var map_obj = this; 3377 3378 if (place.location.onclick_action == "custom_link") { 3379 if (place.location.open_new_tab == 'yes') 3380 window.open(place.location.redirect_custom_link, '_blank'); 3381 else 3382 window.open(place.location.redirect_custom_link, '_self'); 3383 } else { 3384 place.infowindow.open(this.map, place.marker); 3385 if (typeof map_obj.settings.infowindow_click_change_center != 'undefined' && map_obj.settings.infowindow_click_change_center == true) { 3386 map_obj.map.setCenter(place.marker.getPosition()); 3387 } 3388 if (typeof map_obj.settings.infowindow_click_change_zoom != 'undefined' && map_obj.settings.infowindow_click_change_zoom > 0) { 3389 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 3390 } 3391 if (this.map_data.map_tabs && this.map_data.map_tabs.direction_tab && this.map_data.map_tabs.direction_tab.dir_tab === true) { 3392 $(this.element).find('.start_point').val(place.address); 3393 } 3394 } 3395 3396 }, 3397 }; 3398 3399 $.fn.maps = function(options, places) { 3400 3401 this.each(function() { 3402 3403 if (!$.data(this, "wpgmp_maps")) { 3404 $.data(this, "wpgmp_maps", new GoogleMaps(this, options, places)); 3405 } 3406 3407 }); 3408 // chain jQuery functions 3409 return this; 3410 }; 3411 3412}(jQuery, window, document));
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.