2013-02-26 112 views
3

我正在尋找一個eval()替代..google.maps.MapOptions + JSON:避免eval()?

我產生USAL谷歌地圖,API V3:

// define options 
    var mapOptions = { 
     zoom: 18, 
     center: new google.maps.LatLng(-33.890542, 151.274856), 
     mapTypeId: eval(maptype["map"]), 
     panControl: true, 
     zoomControl: true, 
     mapTypeControl: true, 
     scaleControl: true 
    }; 

    // create map 
    map = new google.maps.Map(document.getElementById('map_test),mapOptions); 

這工作,因爲它應該的,但我想避免的eval()。 地圖類型經由PHP定義,使用JSON:

echo 'maptype = '.json_encode($options).';'; 

是否有一個的eval替代?

更新: 完整的源代碼:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Unbenanntes Dokument</title> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.7&sensor=false&language=de"></script> 
</head> 

<body> 


<script> 
maptype = {"map":"google.maps.MapTypeId.SATELLITE"};</script> 

<script> 
function Map() 
{ 
var mapOptions = {zoom: 18, center: new google.maps.LatLng(-33.890542, 151.274856), mapTypeId: eval(maptype["map"])}; 

// create map 
map = new google.maps.Map(document.getElementById('map'),mapOptions); 
} 
</script> 

<div id="map" style="width:1200px; height:800px"></div> 
<script> jQuery(document).ready(function ($) {Map();});</script> 

</body> 
</html> 

結果:沒有錯誤,沒有地圖,只是一個灰色背景。

+2

只需'mapTypeId:ngggOptions [「map」]'應該可以工作。 – dfsq 2013-02-26 18:30:34

+0

JSON代表JavaScript Object Notation,因此它是有效的JSON,然後它是JavaScript中的有效對象:) – 2013-02-26 18:31:17

+0

您正在指定URL中的v = 3.7' - 此版本不再可用;你應該只是刪除'v'參數 – duncan 2013-02-27 09:25:09

回答

2

你應該能夠刪除圍繞它的eval()來電,並且它應該可以工作,假設ngggOptions是一個對象並且有一個密鑰map

+0

那會很好,但它不起作用。 – 2013-02-26 19:19:11

+0

更新:我添加了完整的源代碼。它不工作沒有eval().. – 2013-02-26 20:46:18

+0

請發佈的PHP的輸出,而不是PHP本身。 – 2013-02-26 22:51:30