Нарисуйте несколько кругов в Google Maps - PullRequest
1 голос
/ 17 апреля 2010

Я хочу нарисовать несколько кругов на карте, используя API Карт Google и jQuery. Следующий код работает до тех пор, пока строка с drawMapCircle () закомментирована (маркеры расположены правильно).

Что не так с моим кодом?

$.getJSON(
    "ajax/show.php",
    function(data)
    {
        $.each(data.points, function(i, point)
        {
            map.addOverlay(new GMarker(new GLatLng(point.lat, point.lng)));
            drawMapCircle(point.lat, point.lng, 0.01, '#0066ff', 2, 0.8, '#0cf', 0.1);
        });
    }
);

function drawMapCircle(lat, lng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity)
{
    var d2r = Math.PI / 180;
    var r2d = 180 / Math.PI;
    var Clat = radius * 0.014483;  // statute miles into degrees latitude conversion
    var Clng = Clat/Math.cos(lat * d2r); 
    var Cpoints = []; 

    for (var i = 0; i < 33; i++)
    { 
        var theta = Math.PI * (i / 16);
        Cy = lat + (Clat * Math.sin(theta));
        Cx = lng + (Clng * Math.cos(theta));
        var P = new GLatLng(Cy, Cx);
        Cpoints.push(P);
    }

    var polygon = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
    map.addOverlay(polygon);
}

Javascript выдает следующую ошибку:

Error: a is undefined
Source: http://maps.gstatic.com/intl/de_ALL/mapfiles/208a/maps2.api/main.js
Line: 317
function Nh(){x(pd).sV();eval(arguments[1])} 

1 Ответ

0 голосов
/ 17 апреля 2010

Вам нужно будет преобразовать значения точек, возвращаемые при вызове ajax, в числа с плавающей точкой , так как API Google, кажется, задыхается при получении строк ..

используйте parseFloat как это

drawMapCircle(parseFloat(point.lat), parseFloat(point.lng), 0.01, '#0066ff', 2, 0.8, '#0cf', 0.1);

обновленный ответ актуальная проблема заключается в строках

Cy = lat + (Clat * Math.sin(theta));
Cx = lng + (Clng * Math.cos(theta));

сложение между строкой и числом приводит к тексту ... и поскольку оба являются числами с плавающей запятой, оно заканчивается двумя . десятичными разделителями и, следовательно, NaN ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...