`
天梯梦
  • 浏览: 13730970 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Google 地图 google map api / 地图有关

阅读更多

第一种效果:可搜索,可以计算

 

 

参考:

 

http://www.ditu123.com/main/google_map_api.html#The_Hello_World_of_Google_Maps

 

代码:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google 地图 JavaScript API 示例: 控件定位</title>
<script src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=en" type="text/javascript"></script>

<script type="text/javascript">
	function initialize() { //地图初始化函数
		var map = new GMap2(document.getElementById("map_canvas"));//创建地图
		map.setCenter(new GLatLng(40.7142691,-74.0059729), 13);     //区域 深度

		var point = new GLatLng(40.7142691, -74.0059729);            //坐标
		map.addOverlay(new GMarker(point));                      //增加标点
		map.openInfoWindow(map.getCenter(),document.createTextNode("Hello, world")); //增加提示框

		var topRight = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10,10));//取得右上10*10的中心点
		var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));//取得右下10*10的中心点

		map.addControl(new GSmallMapControl(), topRight);       //增加控件 左上角放大缩小工具
	   
		///var smallMapControl = new GOverviewMapControl();        //创建右下缩略图
		map.addControl(smallMapControl, topRight);              //增加控件     
	   
	}
  
	function vok2(){ //获取经纬度函数
		var address=document.getElementById('t').value;
		if (address=="") return "请输入要查询的地址";
		var map = new GMap2(document.getElementById("map_canvas"));//创建地图
		var geocoder = new GClientGeocoder();
		   geocoder.getLatLng(
			address,
			function(point) {
			  if (!point) {
				alert(address + " 无地址!");
			  } else {
				map.setCenter(point, 14);
				var marker = new GMarker(point);
				document.getElementById('v').innerHTML=point;
				map.addOverlay(marker);
				marker.openInfoWindowHtml(address);
			  }
			}
		);
	}

	function calDis(){//调用函数
		var lat1 = document.getElementById( "X1").value * 1;
		var lng1 = document.getElementById( "Y1").value * 1;
		var lat2 = document.getElementById( "X2").value * 1;
		var lng2 = document.getElementById( "Y2").value * 1;
		var dis = GetDistance(lat1, lng1, lat2, lng2);
		document.getElementById("ss").innerHTML ="2点距离是: "+ dis+" km";
	}

	function rad(d)//函数中间调用
	{
		return d * Math.PI / 180.0;
	}

	function GetDistance( lat1, lng1, lat2, lng2)//获取公里数
	{
		if( ( Math.abs( lat1 ) > 90 ) ||( Math.abs( lat2 ) > 90 ) ){
			return false;
		}
		if( ( Math.abs( lng1 ) > 180 ) ||( Math.abs( lng2 ) > 180 ) ){
			return false;
		}
		var radLat1 = rad(lat1);
		var radLat2 = rad(lat2);
		var a = radLat1 - radLat2;
		var b = rad(lng1) - rad(lng2);
		var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
		Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
		s = s *6378.137 ;// EARTH_RADIUS;
		s = Math.round(s * 10000) / 10000;
		return s;
	}
</script>


</head>
<body onload="initialize()" onunload="GUnload()">
	<div id="map_canvas" style="width: 500px; height: 300px"></div>
	<div> 
		<input name="t" type="text" id="t"/>
		<span onclick="vok2();" style="cursor:pointer">[查询]</span>
		<span id="v"></span>
    </div>
	<br /><br />
    <div >
		A:<input type="text" id="X1"/>-<input type="text" id="Y1"/><br />
		B:<input type="text" id="X2"/>-<input type="text" id="Y2"/>
		<span onclick="calDis();" style="cursor:pointer">[计算]</span>
		<span id="ss"></span>
    </div>
   
</body>
</html>

 

第二种,单个标记

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Google Maps API</title>
<!-- Your own Google API key must be used this one will only work
     for this server and directory -->
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA69393o7mAW_7Z8yPE9mj1hT87Zy2LdSAMVK_IWP23IfaHiwArBSqoC1tfQ_nGVfHT7ZJ_ycmO7DjCQ" type="text/javascript"></script>
<script type="text/javascript">
var address="14 Wall Street New York, NY 10010";
var zoom=15;
window.onload = function initialize1() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("googlemap"));
        map.setCenter(new GLatLng(37.4419, -122.1419), zoom);
        map.addControl(new GSmallMapControl());

        geocoder = new GClientGeocoder();
        if (geocoder) {
        geocoder.getLatLng(
            address,
            function(point) {
                if (!point) {
                    alert(address + " not found");
                } else {
                    map.setCenter(point, zoom);
                    var marker = new GMarker(point);
                    map.addOverlay(marker);
                    GEvent.addListener(marker, "mouseover", function() {
                        marker.openInfoWindowHtml("<div style='padding:0; margin:0 ; font-size:12px; height:10px; width:140px;'>" + address + "</div>");
                    }
                );
    
                GEvent.addListener(marker, "mouseout", function() {
                        marker.closeInfoWindow();
                    }
                );
            }
            }
        );
    }
    }
}

</script>
</head>
<body>
<div id="googlemap" style="width:500px; height:300px;"></div>
</body>
</html>

 

使用方法:

 

首先你要保证注册一个google map 免费的 key
http://code.google.com/intl/zh-CN/apis/maps/signup.html (中文)
http://code.google.com/intl/en/apis/maps/signup.html    (英文)

 

之后你可以把上面的代码封装,那个address就是接口了,输入有效地址就可以显示位置。

 

 

第三种JSPlacemaker - 使用纯JavaScript提取地理数据

 

内容提取仍然是一个热门话题。不久之前Yahoo推出了一个新的Web服务-Placemaker ,新推出的开放式 API,可以帮助开发者将他们的应用程序和数据集地理位置感知化。

但是这个API只允许传值,而且不允许有XML或RSS输出。这也是我 为什么会创建JS-Placemaker 的原因,这样 javaScript便可以通过Placemaker服务。你需要做的就是为Placemaker获取应用程序的ID。

JS- Placemaker是专门为Yahoo Placemaker web服务准备的一个JavaScript wrapper,使用YQL 执行表,让您随时提取地理位置的信息。

 

http://icant.co.uk/jsplacemaker/

 

 

第四种中国电子地图

 

中国电子地图服务商MapABC发布地图API V1.0 ,该版本具有如下特征:

1,对社区用户完全免费。

任何人都能通过 网络申请成为地图API用户。

2,对技术人员友好。

全面支持Javascript调用,丰富的用户手册和官方BBS技术讨论区 支持,提供全方位的技术支撑。 中小网站站长和技术爱好者都能很快掌握API的使用方法。

3,强大的位置数据库支持。

4,对用户友好,展现层采用Flash 技术。

使电子地图更加流畅,动态效果更佳。

5,API除了提供地图操作外,还提供在线查询功能。

支持地理位置 搜索、北京等大城市的实时交通查询。

6,支持地址匹配。

 

 

第五种 http://www.iteye.com/news/13813-web-geo

 

 

附录:

 

Google api http://code.google.com/apis/ajax/playground/

 

 

 

<!--
  copyright (c) 2009 Google inc.

  You are free to copy and use this sample.
  License can be found here: http://code.google.com/apis/ajaxsearch/faq/#license
-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Maps API Sample</title>
    <style type="text/css">
      @import url("http://www.google.com/uds/css/gsearch.css");
      @import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");
    </style>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"
      type="text/javascript"></script>
    <script src="http://www.google.com/uds/api?file=uds.js&amp;v=1.0" type="text/javascript"></script>

    <script src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js" type="text/javascript"></script>
    <script type="text/javascript">

    function initialize() {
      if (GBrowserIsCompatible()) {
      
        // Create and Center a Map
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
    
        // bind a search control to the map, suppress result list
        map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
      }
    }
    GSearch.setOnLoadCallback(initialize);

    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()" style="font-family: Arial;border: 0 none;">
    <div id="map_canvas" style="width: 500px; height: 300px"></div>
  </body>
</html>
 

 

第六种 数据库型 可随意添加!

 

 

参看: Creating an Interactive Travel Map using the Google Maps API

官网: http://code.google.com/apis/maps/articles/phpsqlajax_v3.html

 

 

第七种 自动定位

 

 

设计思路:根据游客的ip信息获得地理信息,进而查询地图,再次显示游客的当前地址

 

 

第一步获得游客的ip信息

 

由于公告只能加html代码,肯定不可以使用服务端程序来获取到游客的ip,那就只能通过js方式获得游客的ip,第一个想法就是使用

 

腾讯的ip开放接口:可以获得一个数组信息

 

 

 

<script language="javascript" type="text/javascript" src="http://fw.qq.com/ipaddress"></script> 
<script>document.write("你的IP是:"+IPData[0]+",来自:"+IPData[2]);</script>
 

 

 

 但是这个数组是gbk编码的,而如果想要用utf8格式,需要转码,不过也可以使用新浪的一个ip接口,这个接口返回的是json格式的数据

 

 

 

<script language="javascript" type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script> 
<script type="text/javascript">document.write("欢迎来自:"+remote_ip_info.country+remote_ip_info.province+remote_ip_info.city+"的朋友!"); </script>
 

 

这个接口的数据是utf8格式,正合适,下面就是用这个接口获得ip信息,备注:ip本来就是一个粗略的估算,再说影响获得你ip的接口因素有很多,最终ip信息的准确还要看新浪的ip接口,个人感觉腾讯的ip接口比较精确可用到县一级,新浪的ip接口只能到市一级!腾讯ip需要转utf8格式,你可以试试看

 

 

第二根据谷歌地图查询游客位置

 

 

<script language="javascript" type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script>

<!--调用谷歌地图js,zoom缩放倍数,center中心,mapTypeId地图类型-->    
<script type="text/javascript" src="http://ditu.google.com/maps/api/js?sensor=true"></script>    
<script language="javascript">    
 var geocoder;    
  var map;   

geocoder = new google.maps.Geocoder();  
 var address = remote_ip_info.country+remote_ip_info.province+remote_ip_info.city; 
 
  function initialize() {    
      
    var latlng = new google.maps.LatLng(39.9493, 116.3975);    
   var myOptions = {
    zoom: 15,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };    
   
    document.getElementById('add').innerHTML = "欢迎来自:"+address+"的朋友!"; 
 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var initialLocation;
var browserSupportFlag =  new Boolean();

if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  // Try Google Gears Geolocation
  } else if (google.gears) {
    browserSupportFlag = true;
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeoLocation(browserSupportFlag);
    });
  // Browser doesn't support Geolocation
  } else {
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }
   
    
  }   
     
 function handleNoGeolocation(errorFlag) {
 if (geocoder) {    
      geocoder.geocode( { 'address': address}, function(results, status) {    
        if (status == google.maps.GeocoderStatus.OK) {   
          map.setCenter(results[0].geometry.location);    
          var marker = new google.maps.Marker({    
              map: map,     
              position: results[0].geometry.location,    
               title:'位置'
        
          });   
         
        }     
      });    
    } 
 
  }
    
  </script>    

<body onload="initialize()">  
<div id="add" style="text-align: center;"></div>
<div id="map_canvas" style="width: 500px; height: 400px;"></div> 
 

或者使用google 的  Geolocation

 

二、浏览器的支持情况

 

目前W3C地理位置API被以下桌面浏览器支持:

» Firefox 3.5+

» Chrome 5.0+

» Safari 5.0+

» Opera 10.60+

» Internet Explorer 9.0+ (不支持6-8)

 

W3C地理位置API还可以被手机设备所支持,如下:

» Android 2.0+

» iPhone 3.0+

» Opera Mobile 10.1+

» Symbian (S60 3rd & 5th generation)

» Blackberry OS 6

» Maemo

 

国内,对于桌面浏览器,不支持地理位置API的低版本IE依旧占据半壁江山,所以,在桌面浏览器上应用此API还需些日子。不过对于像是手机,ipad这类移动设备,我觉得是可以好好用用这个不错的API的,可以做出很多实用的功能的。

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>浏览器地理位置信息api测试</title>
</head>

<body>
<div id="gmap" style="width:500px;height:400px;"></div>

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var eleGmap = document.getElementById("gmap");
var showMap = function(position) {
	//经纬度
    var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
	//地图参数
	var options = {
		zoom: 10,
		center: pos,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	//地图
	var map = new google.maps.Map(eleGmap, options);
	//地图浮动提示
	var marker = new google.maps.Marker({
		position: pos,
		map: map,
		title: "用户位置"
	});
	//提示内容
	var contentString = "<b>时间戳:</b> " + parseTimestamp(position.timestamp) + "<br/><b>用户位置:</b> 纬度 " + position.coords.latitude + ", 经度 " + position.coords.longitude + ", 精确度 " + position.coords.accuracy;
	var infowindow = new google.maps.InfoWindow({
		content: contentString
	});
	//提示事件绑定
	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open(map,marker);
	});
};

//时间戳获取与处理
var parseTimestamp = function(timestamp) {
	var d = new Date(timestamp);
	var day = d.getDate();
	var month = d.getMonth() + 1;
	var year = d.getFullYear();
	var hour = d.getHours();
	var mins = d.getMinutes();
	var secs = d.getSeconds();
	var msec = d.getMilliseconds();
	return year + "年" + month +"月"+ day +"日 "+ hour + ":" + mins + ":" + secs + ", " + msec;
};

if (navigator.geolocation) {
	eleGmap.innerHTML = '<div id="help" style="width:500px;height:400px;"><img src="http://www.zhangxinxu.com/study/image/loading.gif" /></div>';
    //一次性获取位置的请求
    navigator.geolocation.getCurrentPosition(showMap);
} 
else eleGmap.innerHTML = '<div id="help" style="width:500px;height:400px;">您的浏览器不支持地理位置 O(∩_∩)O~</div>';
</script>
</body>
</html>
 

当用户的位置被返回的时候,会藏在一个位置对象中,该对象包括一些属性,具体见下表:属性 释义

coords.latitude 纬度数值

coords.longitude 经度数值

coords.altitude 参考椭球之上的高度

coords.accuracy 精确度

coords.altitudeAccuracy 高度的精确度

coords.heading 设备正北顺时针前进的方位

coords.speed 设备外部环境的移动速度(m/s)

timestamp 当位置捕获到时的时间戳

 

 

 

 

 

 

分享到:
评论

相关推荐

    谷歌地图Google Map API V3中文开发文档

    谷歌地图 Google Map API V3 中文开发文档是 Google 公司提供的一种基于 Web 的地图应用程序接口,允许开发者在自己的网站或应用程序中嵌入谷歌地图,以提供地图检索、路线规划、地标显示等功能。本文档旨在为开发者...

    Google Map API 使用示例

    Google Map API 是一款强大的工具,它允许开发者在自己的网站或应用程序中嵌入地图功能,提供定位、导航、地理编码、路线规划等多种服务。本示例将深入探讨如何使用 Google Map API,帮助你理解和掌握其核心概念及...

    谷歌地图离线API3.16.2+简单纠偏算法+画扇形

    在IT行业中,尤其是在Web开发领域,谷歌地图API(Google Maps API)是一个广泛使用的工具,它允许开发者在网页或应用程序中嵌入地图,并进行各种自定义操作。本篇将详细讲解标题和描述中提及的几个关键知识点:谷歌...

    google地图api文档

    例如:&lt;script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"&gt;&lt;/script&gt; 3. 加载 Google 地图 API 加载 Google 地图 API 后,需要创建一个地图 DOM 元素,用于容纳地图。例如:&lt;div id="map"&gt;...

    google地图API实现的一个简单demo

    &lt;script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer&gt;&lt;/script&gt; ``` 这里的`YOUR_API_KEY`替换为你的实际API密钥,`initMap`是你将在JavaScript中定义的回调...

    谷歌地图GoogleMap

    https://maps.googleapis.com/maps/api/staticmap?center=-34.397,150.644&zoom=8&size=600x300&markers=color:red%7Clabel:A%7C-34.397,150.644&key=YOUR_API_KEY ``` 四、Directions API Directions API则用于...

    C#开发中谷歌地图调用

    在C#开发中调用谷歌地图API是一项常见的任务,它能为应用程序添加地图展示、定位、导航等功能。本文将详细讲解如何使用谷歌地图API以及涉及的核心类。 首先,要使用谷歌地图API,首要步骤是注册API密钥。如果你的...

    google map api v3.18.0 离线开发包

    总的来说,"google map api v3.18.0 离线开发包"为开发者提供了在无网络环境下使用谷歌地图API的功能,使得地图服务在多种场景下都具备了可行性。通过熟练掌握和应用这个API,开发者可以创建出丰富多样的地图应用。

    google map api学习

    &lt;script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"&gt;&lt;/script&gt; ``` 接下来,初始化地图对象是关键步骤。这通常在JavaScript中完成,通过创建一个新的`google.maps.Map`实例: ```javascript ...

    谷歌地图API-google map api v3

    ### 谷歌地图API V3 - 详细知识点解析 #### 概述 谷歌地图API V3(Google Maps API V3)是谷歌提供的一套强大的工具和服务集合,旨在帮助开发者在网页上集成交互式地图。它支持多种功能,如自定义地图样式、添加...

    Java 调用Google Map Api解析地址,解析经纬度实例

    使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使用的是Google的地理编码服务。一般而言数据量不大的情况使用是不限制的。按照Google...

    基于Google Map API的简单地图

    在IT行业中,Google Map API是一个强大的工具,它允许开发者集成地图功能到他们的应用程序中,提供丰富的地理定位服务。本文将详细解析如何利用Google Map API实现"基于Google Map API的简单地图"的功能,包括显示...

    google离线地图API包 + 地图数据

    Google Map API V3是Google提供的一个JavaScript库,用于在网页上嵌入交互式地图。这个API提供了丰富的功能,如定位、路线规划、地图缩放和平移等。在这个压缩包中,包含了使用Google Map API V3来实现离线地图的...

    Google Map API获取地理位置信息

    在IT领域,Google Map API是开发人员常用的工具之一,它允许我们通过JavaScript编程语言与Google Maps服务进行交互,获取和处理地理位置信息。本篇文章将详细探讨如何利用Google Map API来获取地点的经纬度坐标以及...

    GoogleMap谷歌地图demo

    在IT行业中,GoogleMap是一个广泛使用的地图服务,它提供了丰富的API接口,允许开发者在其应用程序中集成地图功能。本文将深入探讨GoogleMap谷歌地图API的使用,以及如何通过它实现一个全面的地图工具。 首先,让...

    google map api v3源码

    &lt;script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"&gt;&lt;/script&gt; function initMap() { var map = new google.maps.Map(document.getElementById('map'), { center: {lat: -34.397, lng: ...

    Google Map API基本源码

    Google Map API是一个强大的工具,它允许开发者在网页或应用程序中集成地图功能,提供导航、定位、地理编码等服务。这个“Google Map API基本源码”很可能是为了帮助初学者理解和应用这一API而准备的示例代码集合。...

    Google Map Api 调用样例程序(Java版)

    在IT行业中,Google Map API是一个广泛使用的工具,它允许开发者集成地图功能到自己的应用程序中,无论是Web应用还是桌面应用。本示例程序是基于Java语言实现的,它为我们展示了如何利用Google Map API来画点和画线...

    google map api 及范例

    谷歌地图API(Google Maps API)是谷歌提供的一套强大的开发工具,允许开发者在自己的网站或应用中嵌入交互式地图,实现地理位置相关的功能。这个压缩包包含两份重要的资源:《google_map_api中文手册.chm》和...

Global site tag (gtag.js) - Google Analytics