利用Javascript加载地图时做了一个加载图标,结果地图放大缩小时,地图会跟着平移,是什么原因呢?谢谢 5

意思就是拉框放大或拉框缩小时,地图就跟着拉框平移了... 意思就是拉框放大或拉框缩小时,地图就跟着拉框平移了 展开
 我来答
woshixindong
2014-03-11 · TA获得超过432个赞
知道小有建树答主
回答量:268
采纳率:100%
帮助的人:306万
展开全部
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN" type="text/javascript"></script>
        <!-- <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>-->

        <script type="text/javascript">
            function load(){
                //检查浏览器的兼容性.
                if (GBrowserIsCompatible()){
                    //加载地图
                    var map = new GMap2(document.getElementById("map_canvas"));
                    map.addControl(new GSmallMapControl());
                    map.addControl(new GMapTypeControl());
                    map.setCenter(new GLatLng(39.9493, 116.3975), 13);
  
  // Create a base icon for all of our markers that specifies the
  // shadow, icon dimensions, etc.
                    google.maps.LabelMarker = function(latlng, options){
                          this.latlng = latlng;
                          this.labelText = options.labelText || '';
                         this.labelClass = options.labelClass || 'writeb';
                        this.labelOffset = options.labelOffset || new google.maps.Size(8, -33);
                        options.icon = options.icon || getTextIcon();
                        google.maps.Marker.apply(this, arguments);
                    }
 
                    google.maps.LabelMarker.prototype = new google.maps.Marker(new google.maps.LatLng(0, 0)); 
                    google.maps.LabelMarker.prototype.initialize = function(map){
                        google.maps.Marker.prototype.initialize.call(this, map);         
                         var label = document.createElement('div');
                         label.className = this.labelClass;
                         label.innerHTML = this.labelText;
                        label.style.position = 'absolute';
                           label.style.width = '48px';
                         map.getPane(G_MAP_MARKER_PANE).appendChild(label);
     
                         this.map = map;
                         this.label = label;
                     }
                     google.maps.LabelMarker.prototype.redraw = function(force){
                        google.maps.Marker.prototype.redraw.call(this, map);     
                         if(!force){
                             return;
                         }
                         var point = this.map.fromLatLngToDivPixel(this.latlng);
                        var z = google.maps.Overlay.getZIndex(this.latlng.lat());
     
                        this.label.style.left = (point.x + this.labelOffset.width) + 'px';
                         this.label.style.top = (point.y + this.labelOffset.height) + 'px';
                         this.label.style.zIndex = z + 1;
                     }
 
                    google.maps.LabelMarker.prototype.remove = function(){
                        this.label.parentNode.removeChild(this.label);
                           this.label = null;
                        google.maps.Marker.prototype.remove.call(this);
                     }
                     var text="这里是显示的文字";//在这里接收要显示的信息,文字要用双引号""
                    function getTextIcon(){
                        var icon = new google.maps.Icon();
//    icon.image = "http:labs.google.com/ridefinder/images/mm_20_red.png";  
                        icon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
                        icon.iconSize = new GSize(37,37 );
                         icon.iconAnchor = new GPoint(0, 40);
                          icon.infoWindowAnchor = new GPoint(5, 1);
                         return icon;
                    }
                     var marker = new google.maps.LabelMarker(map.getCenter(),{labelText:text});//在这加入n         
                     map.addOverlay(marker);
                }
            }                
    </script>
    </head>
    <body onLoad="load()" onUnload="GUnload()">
        <!-- 地图画板 -->
        <div id="map_canvas" style="width:640px; height:480px"></div>
    </body>
</html>
Harwise
2014-03-11 · TA获得超过2321个赞
知道小有建树答主
回答量:3299
采纳率:0%
帮助的人:1135万
展开全部
因为你定位的时候 以图片所在的框作为它的relative框。所以它是因随着你这个框大小改变而改变。

解决办法 在外多套一个DIV框(而且保证这个框大小不会变动) 让LOGO的容器改为这个框。再为这个DIV架写一个position:relative; 然后logo 就可以用position:absolute;定位 而不改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-11
展开全部
放大缩小的同时应该改变它的left和top的值才行。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式