Рисование неправильных концентрических кругов с помощью Google Maps

Как насчет вместо того, чтобы использовать, если в событии, Вы развязываете событие, когда избранный класс применяется? Я предполагаю, что Вы добавляете, что класс в Вашем коде где-нибудь, таким образом развязывая событие там был бы похож на это:

$(element).addClass( 'selected' ).unbind( 'hover' );

единственный недостаток - то, что, если Вы когда-либо удаляете выбранный класс из элемента, необходимо подписать его на событие при наведении курсора снова.

8
задан Community 8 February 2017 в 14:15
поделиться

2 ответа

Я разобрался. Вот окончательный код. Может быть, его можно немного реорганизовать?

// 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;
}

Это приведет к следующему:

New myhurricane.net - Wind Radii (Map View) New myhurricane.net - Wind Radii (Satellite View)

4
ответ дан 5 December 2019 в 17:39
поделиться

По сути, вычислите окружность как 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()

Что дает alt text

Я не мог точно уследить за вашим наброском, поэтому просто угадал числа. Кроме того, я сделал два крайних правых квадранта одинаковыми, поскольку именно так выглядел ваш график, но это, конечно, необязательно.

6
ответ дан 5 December 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: