众果搜的博客

脚踏大地,仰望星空,致力于财经投资网站导航与在线网络工具的开发与普及

Search(博客搜索)

热文排行

最近发表

最新评论及回复

« jQuery与Asp.net结合编写网页jQuery中的lt和gt方法之不支持该属性的解决方法 »

Google地图之jQuery插件jmaps使用

在使用Google之jmaps编程时,经常提示:Microsoft JScript 运行时错误: Mapifies Function Does Not Exist,可能是输入的函数不存在在该插件中,或者函数的参数输入格式不正确等引起。在国内使用,地图类型需要修改,因为谷歌中国地图现不支持混合模式(hybrid),你需要修改地图类型为一般类型(normal)。

注意你是否少了jQuery初始化地图这一项。在调用页面将Google地图之mapType修改为map即可,而不是normal。

jQuery(document).ready(function() {

    jQuery('#map').jmap('init', { 'mapType': 'hybrid', 'mapCenter': [37.4419, -122.1419] });
 
        jQuery('.add-marker').click(function() {
            jQuery('#map').jmap('AddMarker', {
                'pointLatLng': [37.4419, -122.1419],
                'pointHTML': '<strong>This was added with jMaps</strong>'
            }, function(marker, options) {
                jQuery('.remove-marker').click(function() {
                    jQuery('#map').jmap('RemoveMarker', marker);
                });
            });
        });

    }); 

为啥不是normal,看看jmaps的原文就知道了(粗体部分)

Mapifies.GetMapType = function ( mapType ) {

// Lets set our map type based on the options
switch(mapType) {
case 'map': // Normal Map
mapType = G_NORMAL_MAP;
break;
case 'sat': // Satallite Imagery
mapType = G_SATELLITE_MAP;
break;
case 'hybrid': //Hybrid Map
mapType = G_HYBRID_MAP;
break;
};
return mapType;
};
 
在添加地标时,Marker的属性如下
var values = {
'pointLatLng': undefined,
'pointHTML': undefined,
'pointOpenHTMLEvent': 'click',
'pointIsDraggable': false,
'pointIsRemovable': false,
'pointRemoveEvent': 'dblclick',
'pointMinZoom': 4,
'pointMaxZoom': 17,
'pointIcon': undefined,
'centerMap': false,
'centerMoveMethod':'normal'
};
return {
'iconImage': undefined,
'iconShadow': undefined,
'iconSize': undefined,
'iconShadowSize': undefined,
'iconAnchor': undefined,
'iconInfoWindowAnchor': undefined,
'iconPrintImage': undefined,
'iconMozPrintImage': undefined,
'iconPrintShadow': undefined,
'iconTransparent': undefined
};
 
使用谷歌jmaps创建标记的实例参考下面
var baseIcon = new GIcon();
51        baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
52        baseIcon.iconSize = new GSize(20, 34);
53        baseIcon.shadowSize = new GSize(37, 34);
54        baseIcon.iconAnchor = new GPoint(9, 34);
55        baseIcon.infoWindowAnchor = new GPoint(9, 2);
56        baseIcon.infoShadowAnchor = new GPoint(18, 25);
57
58        var pointIcon = new GIcon();
59        pointIcon.shadow = "http://www.google.com/mapfiles/arrowshadow.png";
60        pointIcon.iconSize = new GSize(39, 34);
61        pointIcon.shadowSize = new GSize(37, 34);
62        pointIcon.iconAnchor = new GPoint(9, 34);
63        pointIcon.infoWindowAnchor = new GPoint(9, 2);
64        pointIcon.infoShadowAnchor = new GPoint(18, 25);
65
66        function createArrow(point,text) {
67                var icon = new GIcon(pointIcon);
68                icon.image = "http://www.google.com/mapfiles/arrow.png";
69                var marker = new GMarker(point,icon);
70                GEvent.addListener(marker,"click", function() {
71                        marker.openInfoWindowHtml(text);
72                });
73                return marker;
74        }
75        function createMarker(point, index, text) {
76                var letter = String.fromCharCode("A".charCodeAt(0) + index);
77                var icon = new GIcon(baseIcon);
78                icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
79                var marker = new GMarker(point, icon);
80
81                GEvent.addListener(marker, "click", function() {
82                        marker.openInfoWindowHtml(text);
83                        });
84                return marker;
85        }
86        function toggle(id) {
87                var elem = document.getElementById(id);
88                if(elem != null) {
89                        if (elem.style.display == 'none') {
90                                elem.style.display = '';
91                        } else {
92                                elem.style.display = 'none';
93                        }
94                }
95        }
 
jMaps由于在setCenter上有Bug,始终无法在使用过程中放大地图,放弃,下面为曾用到的代码:
          //将地图设置为该市为中心,并放大
//           jQuery('#map').jmap('SearchAddress', {
//               'query': $(this).text(),
//               'returnType': 'getLocations'
//           }, function(result, options) {
//               var valid = Mapifies.SearchCode(result.Status.code);
//               if (valid.success) {
//                   jQuery.each(result.Placemark, function(i, point) {
//                       jQuery('#map').jmap('MoveTo', { centerMethod: 'pan', 'mapType': map, 'mapCenter': [point.Point.coordinates[1], point.Point.coordinates[0]], 'mapZoom': 11 });//                      
//                   });
//               } else {
//                   jQuery('#address').val(valid.message);
//               }
//           });

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright www.zhongguosou.com. Some Rights Reserved.微信号:MiZhiHeiGeTaXiaoMi