4
我試圖用ClojureScript重寫OpenLayers的示例用法。ClojureScript + OpenLayers
JavaScript源代碼如下所示:
var map, layer;
map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.OSM("Simple OSM Map");
map.addLayer(layer);
var projection = new OpenLayers.Projection("EPSG:4326");
var center = new OpenLayers.LonLat(-71.147, 42.472).transform(projection, map.getProjectionObject());
map.setCenter(center, 12);
我已經改寫了這個代碼:
(ns hello.map)
(def mapp (.Map js/OpenLayers "map"))
(def layer (.Layer.OSM js/OpenLayers "Simple OSM Map"))
(.addLayer mapp layer)
(def projection (.Projection js/OpenLayers "EPSG:4326"))
(def center (.Transform (.LonLat js/OpenLayers -71.147 42.472) projection (.getProjectionObject mapp)))
(.setCenter mapp center 12)
雷音產生下面的代碼:
var hello = {map:{}};
hello.map.mapp = OpenLayers.Map("map");
hello.map.layer = OpenLayers.Layer.OSM("Simple OSM Map");
hello.map.mapp.addLayer(hello.map.layer);
hello.map.projection = OpenLayers.Projection("EPSG:4326");
hello.map.center = OpenLayers.LonLat(-71.147, 42.472).Transform(hello.map.projection, hello.map.mapp.getProjectionObject());
hello.map.mapp.setCenter(hello.map.center, 12);
hello.hello = {};
而且它不工作。那麼問題在於ClojureScript生成的代碼沒有new
或者其他的東西?
我真的不知道,但是你是否首先在你的cljs中創建了需要的js對象? – georgek 2012-04-27 15:48:12