Google Map API更新实现用户自定义标注坐标
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 = '<div class="fgmap_markerMsg" id="cusMarkTip">';
markTip += '<h4>用户地图标注</h4>';
markTip += '<div id="mapTips"><p>当前经纬度:(' + custPoint.lat() + ',' + custPoint.lng() + ')<br />';
markTip += '是否将新位置设置为此商户的默认位置?</p>';
markTip += '<div class="MDB" style="text-align:center;"><button id="MapOK" ';
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 = '<h4>正在上传您所保存的坐标信息...</h4>';
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 = '<span class="fgmap_markerMsg">', j;
msg += '<h4>' + GoogleMap.mapMsg[1][0] + '</h4>';
for (var j = 1; j < GoogleMap.mapMsg[1].length; j++) {
msg += GoogleMap.mapMsg[1][j] + "<br />";
}
msg += "</span>";
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 = '<span class="fgmap_markerMsg">', j;
msg += '<h4>' + GoogleMap.mapMsg[1][0] + '</h4>';
for (var j = 1; j < GoogleMap.mapMsg[1].length; j++) {
msg += GoogleMap.mapMsg[1][j] + "<br />";
}
msg += "</span>";
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("对不起,您的浏览器不支持创建地图!");
}
}
})();
分享到:
相关推荐
3. **用户数据**:用户使用 Google Map API 在地图上标注的数据。这类数据由用户自行管理。 对于使用 Google Map API 的场景而言,地图上的数据存储取决于数据的类型。如果是谷歌提供的数据,则由谷歌负责存储和...
在IT行业中,Google Map API是一个强大的工具,它允许开发者在网页上嵌入地图,并通过JavaScript进行高度自定义,实现各种功能。在这个主题中,我们主要关注"google map api"的两个实例,即“自定义标记”和“拖动点...
总结来说,这个"GoogleMap谷歌地图demo"是一个利用GoogleMap API实现的综合地图应用实例,可能包含了地图显示、定位、路线规划、自定义样式等多种功能。开发者可以通过学习和分析这个demo,掌握如何在自己的项目中...
Map API,包括灵图Map API和Google Map API,是开发者用于在网页或应用程序中集成地图功能的重要工具。这两种API提供了丰富的地图数据、定位服务、路线规划等功能,使得开发者能够轻松地构建具有地理定位和地图展示...
通过这个API,用户可以创建自定义的地图服务,包括显示地图、定位、路径规划、标注点以及各种交互式功能。以下是关于Google Map API的一些基础知识和关键概念。 1. **Google 地图 API 概念** - **API 密钥**:使用...
Google Map API 是 Google 提供的一套完整的地图服务解决方案,它允许开发者在网页或移动应用中嵌入交互式地图,实现地点搜索、导航、街景视图等功能。Google Map API 包含多个组件,如 JavaScript API、Static Maps...
总结起来,通过ASP.NET和Google's Static Map API,我们可以构建一个功能丰富的Web地图浏览控件,满足用户查看、操作和标注地图的需求。在实际开发中,需要考虑性能、用户体验和可访问性等因素,以提供高质量的在线...
Google Map API 是Google为全球开发者提供的一个强大工具,允许他们利用Google Maps的功能创建自定义的地图应用。这个API涵盖了从基础的地图展示到复杂的地理位置服务,如路线规划、地理编码、本地搜索等功能,极大...
5. **坐标系统转换**:谷歌地图API不仅可以处理WGS84标准的全球通用经纬度,还支持与其他坐标系的转换,比如在中国地区,可以将百度地图的墨卡托坐标转换为谷歌地图的经纬度坐标,实现跨平台的数据兼容。 6. **覆盖...
7. **事件监听**:GoogleMap对象提供了多种事件监听器,如OnMapClickListener、OnMarkerClickListener等,可以响应用户的交互操作。 8. **性能优化**:为了提升用户体验,应考虑使用TileOverlay来缓存地图区域,...
它允许开发者通过编写JavaScript代码来实现地图的加载、定位、动态更新等功能,为用户提供丰富的地图体验。 1. **地图的加载与初始化**:在HTML文件中引入谷歌地图API的JavaScript库,并通过JavaScript代码设置地图...
本文将详细介绍Google Maps API的基础知识、正向标注、反向标注、任意多边形、自定义GMarker、地图控件与地图属性以及空间数据类型。 **基础知识** 1. **Google Maps API概念**:它是一套JavaScript库,可以嵌入到...
在IT领域,Google Maps API(应用程序接口)是一个强大的工具,允许开发者将谷歌地图集成到自己的网页或应用中,实现各种自定义功能。本项目聚焦于使用JavaScript语言来操作Google Maps API,实现地图的加载、标注点...
总的来说,实现一个类似Google Map的功能涉及到多方面的技术,包括JavaScript编程、API集成、地理信息处理以及用户体验设计。通过学习和实践这些知识点,你能够创建出具有强大地图功能的应用或网站。
3. **标注与图层**:API允许添加自定义标注到地图上,以表示特定的位置或信息。可以创建`Marker`对象,并设置其位置、图标、信息窗口等内容。同时,还可以叠加不同的图层,如交通流量图层、天气图层等。 4. **路径...
谷歌地图应用GoogleMap是一款基于...总的来说,GoogleMap应用结合了Google Maps API的多种功能,为用户提供了一个全面的地理信息服务。通过不断的优化和更新,它可以帮助用户轻松地探索、导航和了解世界各地的城市。
1. **实时定位**:Google Maps API支持获取用户当前的地理位置信息,通过GPS、Wi-Fi、移动网络等多种方式实现。用户可以在地图上看到一个标记代表其当前位置。 2. **地图显示**:开发者可以自定义地图的样式、缩放...