Как насчет вместо того, чтобы использовать, если в событии, Вы развязываете событие, когда избранный класс применяется? Я предполагаю, что Вы добавляете, что класс в Вашем коде где-нибудь, таким образом развязывая событие там был бы похож на это:
$(element).addClass( 'selected' ).unbind( 'hover' );
единственный недостаток - то, что, если Вы когда-либо удаляете выбранный класс из элемента, необходимо подписать его на событие при наведении курсора снова.
Я разобрался. Вот окончательный код. Может быть, его можно немного реорганизовать?
// Returns points for a wind field for a cyclone. Requires
// a LatLon centre point, and an array of wind radii, starting
// from the northeast quadrant (NEQ), i.e., [200, 200, 150, 175]
//
// Returns points to be used in a GPolyline object.
function pointsForWindQuadrant(centrePoint, radii){
if(radii.length != 4){ return false; }
var points = [];
var angles = [0, 90, 180, 270];
// For each angle 0, 90, 180, 270...
for(a = 0; a < angles.length; a++){
// For each individual angle within the range, create a point...
for(i = angles[a]; i <= angles[a] + 90; i++){
var point = centrePoint.destPoint(i, radii[a] * 1.85); // Radius should be in nautical miles from NHC
points.push(new google.maps.LatLng(point.lat, point.lon));
}
}
// Add the first point again, to be able to close the GPolyline
var point = centrePoint.destPoint(0, radii[0] * 1.85);
points.push(new google.maps.LatLng(point.lat, point.lon));
return points;
}
Это приведет к следующему:
По сути, вычислите окружность как x, y = (cos (a), sin (a)), а затем умножьте это (оба члена) на радиус, который является соответствующей функцией угла. Я плохо знаю Javascript или карты Google, поэтому сделаю это на Python, надеюсь, это достаточно ясно из этого.
from pylab import *
def Rscale(a):
if a>3*pi/2: # lower right, and then work CW around the circle
return 1.
elif a>pi: # lower left
return .9
elif a>pi/2: # upper left
return .8
else: # upper right
return 1.
def step_circle(R):
return array([(R*Rscale(a))*array([cos(a), sin(a)]) for a in arange(0, 2*pi, .001)])
for R in (.5, .7, .9): # make three concentric circles
c = step_circle(R)
plot(c[:,0], c[:,1])
show()
Я не мог точно уследить за вашим наброском, поэтому просто угадал числа. Кроме того, я сделал два крайних правых квадранта одинаковыми, поскольку именно так выглядел ваш график, но это, конечно, необязательно.