Dojo OpenLayers包装panTo错误?

时间:2014-05-21 14:20:34

标签: javascript dojo openlayers

你还在学习道场,

代码:

<!DOCTYPE html>
<html> 
    <head> 
        <title>Creating a simple map</title> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

        <!-- Include OpenLayers library --> 
        <script type="text/javascript" src="http://openlayers.org/api/2.11/OpenLayers.js"></script>
        <!-- load Dojo -->
        <script src="/static/1.9.3/dojo/dojo.js"
            data-dojo-config="async: true"></script>

        <style> 
            html, body { 
                width: 100%; 
                height: 100%; 
                margin: 0; 
                padding: 0; 
            }
        </style> 

        <script type="text/javascript">
            var map;
            var osm;
            var currentPoint;

            require([
                'dojox/geo/openlayers/Map',
                'dojox/geo/openlayers/Layer',
                'dojox/geo/openlayers/GfxLayer',
                'dojox/geo/openlayers/WidgetFeature',
                'dojox/geo/openlayers/Point',
                'dojox/geo/openlayers/GeometryFeature',
                'dojo/dom',
                'dojo/parser',
                'wink/api/geolocation/js/geolocation',
                'dijit/form/RadioButton',
                'dojo/domReady!'
            ], function (Map, Layer, GfxLayer, WidgetFeature, Point, GeometryFeature, dom,parser,GeoLocation){
                    // Create the map using the specified // DOM element 
                    map = new Map("rcp1_map"); 

                    // Create an OpenStreeMap raster layer // and add to the map 
                    osm = new GfxLayer(); 
                    map.addLayer(osm);
                    var mapobj = map.getOLMap();
                    mapobj.addControl(new OpenLayers.Control.LayerSwitcher());
                    mapobj.addControl(new OpenLayers.Control.PanZoomBar());
                    map.fitTo([ -40, 20, 40, -20 ]);

                    parser.parse();
                    currentPoint = new Point({
                        x : 0,
                        y : 0
                    });
                    var f = new GeometryFeature(currentPoint);
                    f.setStroke([ 0, 0, 0 ]);
                    f.setFill([ 255,0, 0]);
                    f.setShapeProperties({
                        r : 5
                    });
                    osm.addFeature(f);
                    osm.redraw();
                    var winkgeo = new GeoLocation();
                    console.log(winkgeo);
                    winkgeo.addListener({method: "winkgeoalert"},
                        1000,
                        false,
                        true
                    );//winkgeo.addListener

                }//require function
            ); //require

            function winkgeoalert(geo){
                currentPoint.setPoint({
                    x:geo.longitude,
                    y:geo.latitude
                });
                //map.fitTo({position:[geo.longitude, geo.latitude]});
                var mapobj = map.getOLMap();
                console.log('mapobj: '+mapobj);
                console.log(geo.longitude);
                console.log(new OpenLayers.LonLat(geo.longitude,geo.latitude));
                console.log(mapobj.getCenter());
                mapobj.panTo(new OpenLayers.LonLat(geo.longitude,geo.latitude));
                osm.redraw();

            }


            function layerType(id){
                require([
                    'dojo/dom'
                ],function(dom){
                var i = dom.byId(id);
                var v = i.value;
                alert(v);
                map.setBaseLayerType(v);
                }//require function
                );//require
            };//layerType


        </script> 
    </head> 
    <body>
        <input type="radio" data-dojo-type="dijit/form/RadioButton" id="osm" name="layertype" value="OSM" onClick="layerType('osm')" />
<input type="radio" checked data-dojo-type="dijit/form/RadioButton" id="arcgis" name="layertype" value="ArcGIS" onClick="layerType('arcgis')" />

        <div id="rcp1_map" style="width: 100%; height: 100%;"></div> 
    </body> 
</html>

mapobj.panTo(new OpenLayers.LonLat(geo.longitude,geo.latitude)); - &GT; OpenLayers库方法没有按预期反应? dojo对coord系统做了什么蠢事?

还有另一种方法可以通过dojo的包装注入OpenLayers命令吗?

亚瑟。


更新:进入了dojo源代码。问题:不同的地理投影系统问题! FIDED!

0 个答案:

没有答案