2011-08-23 87 views
0

我已經在他的第3版中開發了一個簡單的google map應用程序和它們的api。由於在我的機器上一切正常,我將它發送給我的同事,他報告說他的計算機折線斷開以隨機方式移動其部分(如here所示)。類似的事情發生在地區,這些地區也隨着大綱的發展而將其部分填滿。Google Map Api v3折線和多邊形分解

代碼折線很簡單:

var opts = eval(json); 
var options = { 
    strokeColor: opts.color, 
    strokeOpacity: opts.opacity, 
    strokeWeight: opts.weight, 
    geodesic: true 
}; 
var line = new google.maps.Polyline(options); 

line.setPath(google.maps.geometry.encoding.decodePath(opts.points)); 
line.setMap(map); 

,我真的不能弄清楚什麼是這樣做的原因。這看起來像谷歌地圖渲染中的錯誤。每次都發生在不一致的地方。同事正在使用IE 9,而我(和其他同事,誰也沒有遇到此錯誤)IE 8

所以我問,如果有人遇到類似的問題或有任何想法可能會導致它。

編輯: 我已經更新了我的IE版本到9,並仍然在我的電腦上正常工作,所以它不是IE版本的問題。

編輯2: 它是由同事的系統上不正常的dpi造成的。較高的dpi值導致谷歌地圖渲染不當。我對谷歌的研究沒有提供有用的解決方案(除了微小的「改變你的dpi」)。如果任何人有任何想法如何解決這個問題,我會非常感激。

在此先感謝您的任何想法。

+0

請問您可以發佈確切的json字符串嗎? – Jiri

+0

值取決於當然情況,但這裏是一個示例:({color:'#FF0000',weight:1,opacity:1.0,points:'someEncodedPoints',levels:'someEncodedLevels',zoomFactor:16,numLevels:4 }) – slawekwin

+0

解碼路徑是怎樣的?我的意思是在'decodePath(...)'之後。 – Jiri

回答

1

正如EDIT2問題本故障是由非標dpi設置造成的。 Google對此的官方立場是將系統dpi更改爲標準,因此目前可能沒有可行的解決方案。希望這會隨着時間而改變。

+0

感謝您的回答..您是否發現了任何替代方法? – writeToBhuwan

+0

@writeToBhuwan不幸的是,我沒有,但公平地說,自從這個答案以來我沒有找到任何東西。 – slawekwin

0

難道json字符串是像json = "{...}"這樣的字符串化對象嗎?在這種情況下它括在括號輪:

var opts = eval("(" + json + ")"); 

eval()評估表達式表達不能與大括號開始。

編輯:更妙的是

var opts = JSON.parse(json); 
+0

json在c#中生成,如下所示:「({{...}}) 「,所以開始於(並以)結束,因此情況並非如此,但是感謝您的迴應 – slawekwin

+0

爲什麼選擇eval()?如前所述,它會解決表達式 - 故意?如果只是一個小表達:可以說ISO8601日期某處2011-08-23減少到1980年 - 因爲它計算... – Mike

相關問題