Newer
Older
/**
* @file
* Common marker highlighting routines.
*/
/**
* Highlights marker on rollover.
* Removes highlight on previous marker.
*
* Creates a "circle" using 20-sided GPolygon at the given point
* Circle polygon object is global variable as there is only one highlighted marker at a time
* and we want to remove the previously placed polygon before placing a new one.
*
* Original code "Google Maps JavaScript API Example"
*/
haiiro.shimeji
committed
highlightMarker = function (gmap, currentMarker, highlightID, color) {
var map = gmap.map;
var markerPoint = currentMarker.marker.getPosition();
var polyPoints = Array();
haiiro.shimeji
committed
var mapNormalProj = gmap.highlight.overlay.getProjection();
var mapZoom = map.getZoom();
haiiro.shimeji
committed
var clickedPixel = mapNormalProj.fromLatLngToDivPixel(markerPoint, mapZoom);
var polySmallRadius = 20;
var polyNumSides = 20;
var polySideLength = 18;
for (var a = 0; a < (polyNumSides + 1); a++) {
var aRad = polySideLength * a * (Math.PI/180);
var polyRadius = polySmallRadius;
var pixelX = clickedPixel.x + polyRadius * Math.cos(aRad);
var pixelY = clickedPixel.y + polyRadius * Math.sin(aRad);
haiiro.shimeji
committed
var polyPixel = new google.maps.Point(pixelX, pixelY);
var polyPoint = mapNormalProj.fromDivPixelToLatLng(polyPixel, mapZoom);
polyPoints.push(polyPoint);
}
// Using GPolygon(points, strokeColor?, strokeWeight?, strokeOpacity?, fillColor?, fillOpacity?)
haiiro.shimeji
committed
gmap.highlight.polygon = new google.maps.Polygon( {
paths: polyPoints,
strokeColor: color,
strokeWeight: 2,
strokeOpacity: 0,
fillColor: color,
fillOpacity: 0.5
} );
gmap.highlight.polygon.setMap( map );
haiiro.shimeji
committed
unHighlightMarker = function (gmap, currentMarker, highlightID) {
if (gmap.highlight.polygon) {
gmap.highlight.polygon.setMap( null );
delete gmap.highlight.polygon;
haiiro.shimeji
committed
Drupal.gmap.addHandler('gmap', function (elem) {
var obj = this;
function HighlightOverlay(m) { this.setMap(m); }
HighlightOverlay.prototype = new google.maps.OverlayView();
HighlightOverlay.prototype.onAdd = function() { }
HighlightOverlay.prototype.onRemove = function() { }
HighlightOverlay.prototype.draw = function() { }
obj.bind('init', function () {
obj.highlight = {};
obj.highlight.overlay = new HighlightOverlay( obj.map );
});
} );