Skip to content

Commit 22685b3

Browse files
committed
Added selected marker image options
1 parent 0f7c00c commit 22685b3

File tree

8 files changed

+98
-10
lines changed

8 files changed

+98
-10
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jquery-storelocator-plugin",
3-
"version": "2.3.3",
3+
"version": "2.3.4",
44
"description": "This jQuery plugin takes advantage of Google Maps API version 3 to create an easy to implement store locator. No back-end programming is required, you just need to feed it KML, XML, or JSON data with all the location information.",
55
"repository": {
66
"type": "git",

dist/assets/js/plugins/storeLocator/jquery.storelocator.js

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
/*! jQuery Google Maps Store Locator - v2.3.3 - 2015-12-22
1+
/*! jQuery Google Maps Store Locator - v2.3.4 - 2016-01-20
22
* http://www.bjornblog.com/web/jquery-store-locator-plugin
3-
* Copyright (c) 2015 Bjorn Holine; Licensed MIT */
3+
* Copyright (c) 2016 Bjorn Holine; Licensed MIT */
44

55
;(function ($, window, document, undefined) {
66
'use strict';
@@ -13,7 +13,7 @@
1313
}
1414

1515
// Variables used across multiple methods
16-
var $this, listTemplate, infowindowTemplate, dataTypeRead, originalOrigin, originalData, originalZoom, dataRequest, searchInput, addressInput, olat, olng, storeNum, directionsDisplay, directionsService;
16+
var $this, listTemplate, infowindowTemplate, dataTypeRead, originalOrigin, originalData, originalZoom, dataRequest, searchInput, addressInput, olat, olng, storeNum, directionsDisplay, directionsService, prevSelectedMarkerBefore, prevSelectedMarkerAfter;
1717
var featuredset = [], locationset = [], normalset = [], markers = [];
1818
var filters = {}, locationData = {}, GeoCodeCalc = {}, mappingObj = {};
1919

@@ -32,6 +32,8 @@
3232
'markerImg' : null,
3333
'markerDim' : null,
3434
'catMarkers' : null,
35+
'selectedMarkerImg' : null,
36+
'selectedMarkerImgDim' : null,
3537
'lengthUnit' : 'm',
3638
'storeLimit' : 26,
3739
'distanceAlert' : 60,
@@ -1031,6 +1033,35 @@
10311033
$('.' + this.settings.locationList + ' ul').append(listHtml);
10321034
},
10331035

1036+
/**
1037+
* Change the selected marker image
1038+
*
1039+
* @param marker {Object} Google Maps marker object
1040+
*/
1041+
changeSelectedMarker: function (marker) {
1042+
var markerImg;
1043+
1044+
// Reset the previously selected marker
1045+
if ( typeof prevSelectedMarkerAfter !== 'undefined' ) {
1046+
prevSelectedMarkerAfter.setIcon( prevSelectedMarkerBefore );
1047+
}
1048+
1049+
// Change the selected marker icon
1050+
if(this.settings.selectedMarkerImgDim === null) {
1051+
markerImg = this.markerImage(this.settings.selectedMarkerImg);
1052+
} else {
1053+
markerImg = this.markerImage(this.settings.selectedMarkerImg, this.settings.selectedMarkerImgDim.width, this.settings.selectedMarkerImgDim.height);
1054+
}
1055+
1056+
// Save the marker before switching it
1057+
prevSelectedMarkerBefore = marker.icon;
1058+
1059+
marker.setIcon( markerImg );
1060+
1061+
// Save the marker to a variable so it can be reverted when another marker is clicked
1062+
prevSelectedMarkerAfter = marker;
1063+
},
1064+
10341065
/**
10351066
* Create the infowindow
10361067
*
@@ -1076,6 +1107,11 @@
10761107
$container.animate({
10771108
scrollTop: $selectedLocation.offset().top - $container.offset().top + $container.scrollTop()
10781109
});
1110+
1111+
// Custom selected marker override
1112+
if(_this.settings.selectedMarkerImg !== null) {
1113+
_this.changeSelectedMarker(marker);
1114+
}
10791115
});
10801116
}
10811117
},
@@ -2108,6 +2144,11 @@
21082144
else {
21092145
_this.createInfowindow(selectedMarker, listLoc, infowindow, storeStart, page);
21102146
}
2147+
2148+
// Custom selected marker override
2149+
if(_this.settings.selectedMarkerImg !== null) {
2150+
_this.changeSelectedMarker(selectedMarker);
2151+
}
21112152
});
21122153

21132154
// Prevent bubbling from list content links

dist/assets/js/plugins/storeLocator/jquery.storelocator.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

options.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
| markerImg | null | Replacement marker image used for all locations |
1111
| markerDim | null | Replacement marker dimensions object - ex value: { height: 20, width: 20 } |
1212
| catMarkers | null | Multiple replacement marker images based on categories object. Value should be array with image path followed by dimensions - ex value: catMarkers : {'Restaurant' : ['img/red-marker.svg', 32, 32]}
13+
| selectedMarkerImg | null | Selected marker image. |
14+
| selectedMarkerImgDim | null | Selected marker image dimensions object - ex value: { height: 20, width: 20 } |
1315
| lengthUnit | 'm' | The unit of length. Default is m for miles, change to km for kilometers. |
1416
| storeLimit | 26 | The number of closest locations displayed at one time. Set to -1 for unlimited. |
1517
| distanceAlert | 60 | Displays alert if there are no locations with 60 m/km of the user's location. Set to -1 to disable. |

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jquery-storelocator-plugin",
3-
"version": "2.3.3",
3+
"version": "2.3.4",
44
"description": "This jQuery plugin takes advantage of Google Maps API version 3 to create an easy to implement store locator. No back-end programming is required, you just need to feed it KML, XML, or JSON data with all the location information.",
55
"repository": {
66
"type": "git",

readme.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ filtering.
3535

3636
## Changelog
3737

38+
### Version 2.3.4
39+
40+
* Added new selected marker image options to highlight clicked marker.
41+
3842
### Version 2.3.3
3943

4044
* Removed code that temporarily hid the map and results, when there are no results, in favor of just displaying the no

src/js/jquery.storelocator.js

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
}
1111

1212
// Variables used across multiple methods
13-
var $this, listTemplate, infowindowTemplate, dataTypeRead, originalOrigin, originalData, originalZoom, dataRequest, searchInput, addressInput, olat, olng, storeNum, directionsDisplay, directionsService;
13+
var $this, listTemplate, infowindowTemplate, dataTypeRead, originalOrigin, originalData, originalZoom, dataRequest, searchInput, addressInput, olat, olng, storeNum, directionsDisplay, directionsService, prevSelectedMarkerBefore, prevSelectedMarkerAfter;
1414
var featuredset = [], locationset = [], normalset = [], markers = [];
1515
var filters = {}, locationData = {}, GeoCodeCalc = {}, mappingObj = {};
1616

@@ -29,6 +29,8 @@
2929
'markerImg' : null,
3030
'markerDim' : null,
3131
'catMarkers' : null,
32+
'selectedMarkerImg' : null,
33+
'selectedMarkerImgDim' : null,
3234
'lengthUnit' : 'm',
3335
'storeLimit' : 26,
3436
'distanceAlert' : 60,
@@ -1028,6 +1030,35 @@
10281030
$('.' + this.settings.locationList + ' ul').append(listHtml);
10291031
},
10301032

1033+
/**
1034+
* Change the selected marker image
1035+
*
1036+
* @param marker {Object} Google Maps marker object
1037+
*/
1038+
changeSelectedMarker: function (marker) {
1039+
var markerImg;
1040+
1041+
// Reset the previously selected marker
1042+
if ( typeof prevSelectedMarkerAfter !== 'undefined' ) {
1043+
prevSelectedMarkerAfter.setIcon( prevSelectedMarkerBefore );
1044+
}
1045+
1046+
// Change the selected marker icon
1047+
if(this.settings.selectedMarkerImgDim === null) {
1048+
markerImg = this.markerImage(this.settings.selectedMarkerImg);
1049+
} else {
1050+
markerImg = this.markerImage(this.settings.selectedMarkerImg, this.settings.selectedMarkerImgDim.width, this.settings.selectedMarkerImgDim.height);
1051+
}
1052+
1053+
// Save the marker before switching it
1054+
prevSelectedMarkerBefore = marker.icon;
1055+
1056+
marker.setIcon( markerImg );
1057+
1058+
// Save the marker to a variable so it can be reverted when another marker is clicked
1059+
prevSelectedMarkerAfter = marker;
1060+
},
1061+
10311062
/**
10321063
* Create the infowindow
10331064
*
@@ -1073,6 +1104,11 @@
10731104
$container.animate({
10741105
scrollTop: $selectedLocation.offset().top - $container.offset().top + $container.scrollTop()
10751106
});
1107+
1108+
// Custom selected marker override
1109+
if(_this.settings.selectedMarkerImg !== null) {
1110+
_this.changeSelectedMarker(marker);
1111+
}
10761112
});
10771113
}
10781114
},
@@ -2105,6 +2141,11 @@
21052141
else {
21062142
_this.createInfowindow(selectedMarker, listLoc, infowindow, storeStart, page);
21072143
}
2144+
2145+
// Custom selected marker override
2146+
if(_this.settings.selectedMarkerImg !== null) {
2147+
_this.changeSelectedMarker(selectedMarker);
2148+
}
21082149
});
21092150

21102151
// Prevent bubbling from list content links

storelocator.jquery.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"title": "jQuery Google Maps Store Locator",
44
"description": "This jQuery plugin takes advantage of Google Maps API version 3 to create an easy to implement store locator. No back-end programming is required, you just need to feed it KML, XML, or JSON data with all the location information.",
55
"keywords": ["jquery","locator","store", "location", "locations", "maps", "map", "stores", "find"],
6-
"version": "2.3.3",
6+
"version": "2.3.4",
77
"author": {
88
"name": "Bjorn Holine",
99
"url": "http://www.bjornblog.com/"

0 commit comments

Comments
 (0)