parseJSONをはずしたらうまくいくが・・・

サーバーからMAP上に表示するマーカーをJSON形式でとってきて、json.jsライブラリのparseJSONでオブジェクトに変換するようにしていたが、Firefox拡張機能FireBugにエラーが出るようになった。ソース↓

GDownloadUrl( "list3.php?since="+encodeURIComponent(since), function(listdata){
	//var obj = listdata.parseJSON();
	var obj = eval('(' + listdata + ')');
	var lastModif = obj.time;
	var markers   = obj.list;

parseJSONしているところをコメントにして、evalでとるようにし、HTML側で外部参照しているjson.jsをコメント化するとエラーが出ない。他のソースで試してみると。HTMLファイルが↓

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://maps.google.co.jp/maps?file=api&amp;v=2&amp;key=Your API KEY" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" src="json.js"></script>
    <script type="text/javascript" src="sample.js" charset=utf-8"></script>
  </head>
  <body>
    <div id="mymap" style="width: 500px; height: 400px"></div>
  </body>
</html>

で、

var map;

function startUp() {
  map = new GMap2( document.getElementById("mymap") );

  GDownloadUrl( "center.json", mySetCenter );
  function mySetCenter(data) {
    var obj = data.parseJSON();
    map.setCenter( new GLatLng(obj.lat, obj.lng), obj.zoom );
  }
}
onload   = startUp;
onunload = GUnload;

↑のように、JSONデータを取得し、MAPを表示するのみであれば、エラーは出ないが、

var map;

function startUp() {
  map = new GMap2( document.getElementById("mymap") );

  GDownloadUrl( "center.json", mySetCenter );
  function mySetCenter(data) {
    var obj = data.parseJSON();
    map.setCenter( new GLatLng(obj.lat, obj.lng), obj.zoom );
  }
	GEvent.addListener(map, "dblclick", function(ov, latlng){
	  addEditableMarker(undefined, latlng);
	});
}
function addEditableMarker(id, latlng){
	var mk = new GMarker(latlng);
	map.addOverlay(mk);
}
onload   = startUp;
onunload = GUnload;

ダブルクリックしたときに、マーカーを表示する処理を追加した場合に、「Bd(a, b, true).push is not a function」といったエラーが発生する。