if(typeof GoogleMap === 'undefined'){
var GoogleMap = {};
}
(function(){
if (!document.getElementById("fgmap")) {
return false;
}
else {
// 是否可创建Google地图控件
var isCompatible = new GBrowserIsCompatible();
if (isCompatible) {
var mapContainer = document.getElementById("fgmap");
// 创建GoogleMAP地图实例
var map = new GMap2(mapContainer);
// 地图默认的比例尺级别
var perviewLevel = 14;
// 大的地图缩放级别控件
var largeMapControl = new GLargeMapControl();
// 地图缩略图控件
var overviewMapControl = new GOverviewMapControl();
// 比例尺控件
var scaleControl = new GScaleControl();
// 地图类形选择控件
var mapTypeControl = new GMapTypeControl();
// 地址-坐标转换器
var geocoder = new GClientGeocoder();
// 上一次的查询地址
var lastAddress = '';
// 上一次的查询坐标
var lastPoint = null;
// 最后一个创建的标记控件
var lastMarker = null;
// 用户标记的最后一个坐标点
var cusLastPoint = null;
GoogleMap.mapMsg = [];
// 创建地图
GoogleMap.Map = function(lat, lng){
var point = new GLatLng(lat, lng);
map.addMapType(G_PHYSICAL_MAP);
map.setCenter(point, perviewLevel);
map.enableDoubleClickZoom();
map.enableScrollWheelZoom();
map.enableContinuousZoom();
map.addControl(largeMapControl)
map.addControl(overviewMapControl);
map.addControl(mapTypeControl);
map.addControl(scaleControl);
};
// 创建标记
GoogleMap.createMarker = function(latlng, markerOptions){
var marker = markerOptions ? new GMarker(latlng, markerOptions) : new GMarker(latlng);
lastMarker = marker;
return marker;
};
// 自定义标记选项
/* =========================================================================================================================================================================================
参数说明:
常数:G_DEFAULT_ICON 标记使用的默认图标。
image String 图标的前景图像 URL。
shadow String 图标的阴影图像 URL。
iconSize GSize 图标前景图像的像素大小。
shadowSize GSize 阴影图像的像素大小。
iconAnchor GPoint 此图标在地图上的锚定点相对于图标图像左上角的像素坐标。
infoWindowAnchor GPoint 信息窗口在此图标上的锚定点相对于图标图像左上角的像素坐标。
printImage String 打印地图所用的前景图标图像的 URL。其大小必须与 image 提供的主图标图像的大小相同。
mozPrintImage String 用 Firefox/Mozilla 打印地图时所用的前景图标图像的 URL。其大小必须与 image 提供的主图标图像的大小相同。
printShadow String 打印地图时所用的阴影图像的 URL。由于大多数浏览器都无法打印 PNG 图像,所以图像格式应该为 GIF。
transparent String 在 Internet Explorer 中捕获点击事件时,所用的透明前景图标图像的 URL。此图像应是具有 1% 不透明性的 24 位 PNG 格式的主图标图像,但其大小和形状同主图标相同。
imageMap Array of Number 表示图像地图 x/y 坐标的整数数组,用它指定浏览器(非 Internet Explorer)中图标图像的可点击部分。
maxHeight Integer 指定拖动标记时视觉上垂直“上升”的距离(以像素表示)。(自 2.79 开始)
dragCrossImage String 指定拖动图标时十字交叉图像的 URL。(自 2.79 开始)
dragCrossSize GSize 指定拖动图标时十字交叉图像的像素大小。(自 2.79 开始)
dragCrossAnchor GPoint 指定拖动图标时十字交叉图像的像素坐标偏移量(相对于 iconAnchor)。(自 2.79 开始)
========================================================================================================================================================================================= */
GoogleMap.setCustomIcon = function(IconOptions){
var myIcon = new GIcon(G_DEFAULT_ICON), i;
for (i in IconOptions) {
switch (i) {
case 'iconSize':
case 'shadowSize':
case 'dragCrossSize':
myIcon[i] = new GSize(IconOptions[i][0], IconOptions[i][1]);
break;
case 'iconAnchor':
case 'infoWindowAnchor':
case 'infoShadowAnchor':
case 'dragCrossAnchor':
myIcon.iconAnchor = new GPoint(IconOptions[i][0], IconOptions[i][1]);
break;
default:
myIcon[i] = IconOptions[i];
break;
}
}
return myIcon;
};
// 用户自定义标注
GoogleMap.customMarkPoint = function(){
var marker = null;
var markPoint = cusLastPoint ? new GLatLng(cusLastPoint[0],cusLastPoint[1]) : new GLatLng(lastPoint[0],lastPoint[1]);
var markOptions = {
icon: GoogleMap.setCustomIcon({
image: 'http://www.yaohaixiao.com/effects/img/icon13.png'
}),
draggable: true
};
marker = GoogleMap.createMarker(markPoint, markOptions);
GEvent.addListener(marker, "dragstart", function(){
map.closeInfoWindow();
});
GEvent.addListener(marker, "dragend", function(){
var custPoint = marker.getPoint();
var markTip = '
';
markTip += '
用户地图标注 ';
markTip += '
当前经纬度:(' + custPoint.lat() + ',' + custPoint.lng() + ') '; markTip += '是否将新位置设置为此商户的默认位置?
';
markTip += '
marker.openInfoWindowHtml(markTip); }); map.addOverlay(marker); }; // 保存用户自定义坐标 GoogleMap.MapOk = function(){ var savedPoint = lastMarker.getPoint(); var lat = savedPoint.lat(), lng = savedPoint.lng(); var markTip = document.getElementById('cusMarkTip'); markTip.innerHTML = '正在上传您所保存的坐标信息... '; if (timer) { clearTimeout(timer); } var timer = setTimeout(function(){ map.clearOverlays(); var marker = GoogleMap.createMarker(savedPoint); if (GoogleMap.mapMsg) { GEvent.addListener(marker, "click", function(){ var msg = '', j; msg += '' + GoogleMap.mapMsg[1][0] + ' '; for (var j = 1; j msg += GoogleMap.mapMsg[1][j] + " "; } msg += " "; map.openInfoWindowHtml(savedPoint, msg); }); } map.addOverlay(marker); map.setCenter(savedPoint); cusLastPoint = [lat,lng]; }, 2000); }; // 取消用户自定义坐标操作 GoogleMap.MapCancel = function(){ map.removeOverlay(lastMarker); map.closeInfoWindow(); }; // 通过地址获得坐标 GoogleMap.getAddresslatlng = function(response){ var place = response.Placemark[0]; var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); return [place.Point.coordinates[1], place.Point.coordinates[0], point, place]; }; // 标注坐标和相应的说明信息 GoogleMap.MarkerMap = function(lat, lng){ var marker = null; var point = new GLatLng(lat, lng); GoogleMap.Map(lat, lng); marker = this.createMarker(point); if (GoogleMap.mapMsg) { GEvent.addListener(marker, "click", function(){ var msg = '', j; msg += '' + GoogleMap.mapMsg[1][0] + ' '; for (var j = 1; j msg += GoogleMap.mapMsg[1][j] + " "; } msg += " "; map.openInfoWindowHtml(point, msg); }); } map.addOverlay(marker); }; // 将查询地址添加到地图 GoogleMap.addAddressToMap = function(response){ map.clearOverlays(); if (!response || response.Status.code != 200) { alert("对不起, 我们解析不到该地址的经纬度坐标!"); } else { var marker = null, point = GoogleMap.getAddresslatlng(response); var address = point[3].address, lat = point[0], lng = point[1]; GoogleMap.mapMsg = (GoogleMap.mapMsg !== '' && (lastAddress === GoogleMap.mapMsg[0])) ? GoogleMap.mapMsg : [address, [point[3].address, ('经度:' + point[1]), ('纬度:' + point[0])]]; GoogleMap.MarkerMap(lat, lng); lastPoint = [lat,lng]; } }; // 将查询坐标添加到地图 GoogleMap.addPointToMap = function(cPoint){ map.clearOverlays(); var marker = null, lat = cPoint[0], lng = cPoint[1]; GoogleMap.MarkerMap(lat, lng); lastPoint = [lat,lng]; }; // 通过地址/坐标将Marker显示到地图上 GoogleMap.showLocation = function(cPoint){ if (typeof cPoint === 'string') { geocoder.getLocations(cPoint, this.addAddressToMap); lastAddress = cPoint; } else{ GoogleMap.addPointToMap(cPoint); } }; GEvent.addListener(window, 'unload', GUnload); } else { alert("对不起,您的浏览器不支持创建地图!"); } } })();