2010-04-17 55 views
1

我想使用Google Maps API和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); 
} 

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

它會拋出任何javascript錯誤? (用螢火蟲檢查) – 2010-04-17 09:41:27

回答

0

您需要點值轉換,從AJAX調用返回,浮動號碼 作爲谷歌的API,似乎當它接收字符串嗆 ..

使用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)); 

除了字符串和數字之間的收益率,因爲text..and都是浮點數,它有兩個.小數點分隔符結束,從而NaN ...

+0

感謝您的解決方案。該腳本現在工作...我想知道爲什麼新的GLatLng()沒有字符串的問題... – snorpey 2010-04-17 11:04:51

+1

@snorpey,我只是增加了一些信息來解釋發生了什麼,因爲問題是**不* *實際上與谷歌API .. – 2010-04-17 13:03:25