首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClojureScript + OpenLayers

ClojureScript + OpenLayers
EN

Stack Overflow用户
提问于 2012-04-27 18:41:28
回答 1查看 927关注 0票数 5

我正在尝试用ClojureScript重写OpenLayers的用法示例。

Javascript源代码如下所示:

代码语言: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);  

我像这样重写了这段代码:

代码语言:javascript
复制
(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)

Lein生成的代码如下:

代码语言:javascript
复制
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的代码,还是别的什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 22:19:44

是的,您的构造函数调用需要修复:

代码语言:javascript
复制
(ns hello.map)

(def mapp (js/OpenLayers.Map. "map"))
(def layer (js/OpenLayers.Layer.OSM. "Simple OSM Map"))
(.addLayer mapp layer)

(def projection (js/OpenLayers.Projection. "EPSG:4326"))
(def center (.transform (js/OpenLayers.LonLat. -71.147 42.472)
               projection (.getProjectionObject mapp)))
(.setCenter mapp center 12)

未经测试,但您应该明白这一点。注意构造实例和调用实例上的方法之间的区别。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10349168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档