2013-02-26 53 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