2010-04-17 4 views
1

Google지도 API anj jQuery를 사용하여지도에 여러 개의 원을 그립니다. drawMapCircle()이있는 행이 주석 처리되어있는 경우 (마커가 올바르게 배치 된 경우) 다음 코드가 작동합니다.Google지도에 여러 개의 원 그리기

내 코드에 어떤 문제가 있습니까?

$.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); 
} 

자바 스크립트가 다음과 같은 오류가 발생합니다 :

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])} 
+0

자바 스크립트 오류가 발생합니까? (방화 녀와 확인) –

답변

0

당신은 소수점 값을 변환해야합니다을, 구글 API는이 문자열을 수신 할 때 질식 할 것 같은 번호를 떠, 아약스 호출에서 반환 ..이

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

같은

사용 parseFloat

업데이트 않음 실제 문제는 라인에 놓여 문자열 및 숫자 수율 사이 text..and 모두 플로트 번호는,이 두 . 소수점 분리로 종료하고, 따라서 사람

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

또 NaN ...

+0

해결책 주셔서 감사합니다. 이제 스크립트가 작동합니다 ... 왜 새로운 GLatLng()에 문자열에 문제가 없는지 궁금합니다 ... – snorpey

+1

@snorpey, 문제가 ** 발생하지 않았기 때문에 설명하는 정보를 추가했습니다. * Google API를 사용하면 실제로 .. –

관련 문제