2013-07-02 61 views
1

我想获取certian城市的天气信息(城市正在动态发布),并且我遇到了这个非常容易集成的map api。但是一旦我尝试了它,即使我给了另一座城市的经纬度,例如慕尼黑,它也只会显示莫斯科。OpenWeatherMap - 地图只显示莫斯科

这是代码:

<html> 
<head> 
<script src="http://openlayers.org/api/OpenLayers.js"></script> 
<script src="http://openweathermap.org/js/OWM.OpenLayers.1.3.4.js" ></script> 
</head> 
<body onload="init()"> 
<div id="basicMap"></div> 
</body> 
<script type="text/javascript"> 
function init() { 
//Center of map 
var lat = 48.24806; // <--- some dynamic location 
var lon = 11.90166; //<--- some dynamic location 
var lonlat = new OpenLayers.LonLat(lon, lat); 
    var map = new OpenLayers.Map("basicMap"); 
// Create overlays 
// OSM 
    var mapnik = new OpenLayers.Layer.OSM(); 
// Stations 
var stations = new OpenLayers.Layer.Vector.OWMStations("Stations"); 
// Current weather 
var city = new OpenLayers.Layer.Vector.OWMWeather("Weather"); 
//Addind maps 
map.addLayers([mapnik, stations, city]); 
map.setCenter(lonlat, 10); 
} 
</script> 
</html> 

我只是想节省一些能源负荷为我的服务器,并用JS做这样的天气问题前端。如果这可行,这将是美好的,请尽可能帮助。为什么我在这里坚持莫斯科,即使给不同的拉特和隆隆。这是api的链接: ​​

+0

在这个例子中,似乎经纬度不是使用点。你有没有尝试删除点? – Ron

+0

@RyonnSan,是的,你可能是对的,但用点不是一个有趣的莫斯科拉特,但让我试试 – doniyor

+0

@RyonnSan,看,如果我给没有点,地图显示完全不同的地方,沙特阿拉伯 – doniyor

回答

1

显然你需要设置它的投影正常工作。

下面是代码的在伦敦中心的一个例子:

<html> 
<head> 
<script src="http://openweathermap.org/js/OWM.OpenLayers.1.3.4.js" ></script> 
</head> 
<body onload="init()"> 
<div id="basicMap"></div> 
</body> 
<script type="text/javascript"> 
function init() { 
//Center of map 
var lat = 51.5112139; // <--- some dynamic location 
var lon = -0.1198244; //<--- some dynamic location 
var map = new OpenLayers.Map("basicMap"); 
var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984 
var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection 
var position  = new OpenLayers.LonLat(lon, lat).transform(fromProjection, toProjection); 
// Create overlays 
// OSM 
var mapnik = new OpenLayers.Layer.OSM(); 
// Stations 
var stations = new OpenLayers.Layer.Vector.OWMStations("Stations"); 
// Current weather 
var city = new OpenLayers.Layer.Vector.OWMWeather("Weather"); 
//Addind maps 
map.addLayers([mapnik, stations, city]); 
map.setCenter(position, 5); 
} 

</script> 
</html> 

要获得的经度和你的位置的纬度,你可以使用这个网址: http://www.mapcoordinates.net/en

希望这有助于

+0

谢谢,我还没有测试,但似乎很有可能工作。 :) – doniyor

+0

感谢您的信任:) – Ron

+0

它甚至工作:D再次感谢 – doniyor