Google Map API 按地址名 转坐标

235 views
Skip to first unread message

脚踏祥云

unread,
Sep 8, 2009, 12:43:18 AM9/8/09
to 谷歌地图 API 论坛
我现在做的网址要添加对 Google 地图的引用,我已经实现了, 地图的放大缩小,也实现了再地图桑添加图片,按坐标 添加图片.我现在的任务
是: 想Google地图上 选中北京市,然后地图自动跳到北京的级别和高度.
有代码的 么? 我的源码




<!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>
<link href="../style/wojuren/ruzhu.css" rel="stylesheet"
type="text/css" />

<script src="http://ditu.google.cn/maps?
file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-
m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"
type="text/javascript"></script>

<script language="javascript" type="text/javascript">
// alert(window.location.host);
var req = null;
var res = "";
var map=null;
function processReqChange( ) {
if (req.readyState == 4 && req.status == 200 ) {
var c=eval(req.responseText);
for(var i=0;i<c.length;i++){
//将叠加层添加到地图

var latlng=new GLatLng(c[i][0],c[i]
[1]);
function createMarker(point) {
// 为所有标记创建指定阴影、图标尺寸灯的基础图标
var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.cn/mapfiles/
shadow50.png";
//baseIcon.iconSize = new GSize(100, 80); //图标
前景图像的像素大小
//baseIcon.shadowSize = new GSize(43, 27); //阴影图
像的像素大小。
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(2,
2);
var letteredIcon = new GIcon(baseIcon);
var ImageUrl=c[i][5];
//alert(ImageUrl);
letteredIcon.image = ImageUrl;
// 设置 GMarkerOptions 对象
markerOptions = { icon:letteredIcon };
var marker = new GMarker(point, markerOptions);
var letter =c[i][2];
var mapurl=c[i][4];
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml("这里是<b>" + letter + "</
b>"+mapurl);
});
return marker;
}
map.addOverlay(createMarker(latlng));
}
}
}
function loadXMLDoc(url) {
if(window.XMLHttpRequest) {
try { req = new XMLHttpRequest(); } catch(e) { req = false; }
}
else if(window.ActiveXObject)
{
try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {
try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e)
{ req = false; } }
}
if(req) {
req.onreadystatechange = function() { processReqChange( ); };
req.open("GET", url, true);//document.write(url);
req.send("");
}
}
function initialize() {
if (GBrowserIsCompatible()) {//判断浏览器是否支持Google API库
map = new GMap2(document.getElementById("map_canvas")); //生成一个地

map.setCenter(new GLatLng(30.39,104.04), 4); //设定居中坐标,
13级显示....
var smallMapControl = new GSmallMapControl(); //地图的放大
和缩小(只是生成却没有添加)
//smallMapControl
//设定屏幕的左右位置
var topLeft = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize
(10,10)); //设置 屏幕坐标 -- 左上角
var bottomLeft = new GControlPosition(G_ANCHOR_BOTTOM_LEFT,
new GSize(10,10)); //设置 屏幕坐标到 -- 左下角
//在地图上添加放大和缩小到屏幕的左上角
map.addControl(smallMapControl,topLeft);
var bounds = map.getBounds();
var southWest = bounds.getSouthWest(); //返回矩形西南角
的点
var northEast = bounds.getNorthEast(); //返回矩形东北角
的点
var lngSpan = northEast.lng() - southWest.lng(); //中间坐标
GEvent.addListener(map, "zoomend", function() {
// document.getElementById("message").innerHTML = map.getZoom
();
loadXMLDoc("One.ashx?a1="+southWest.lat()+"&a2="+northEast.lat()
+"&b1="+southWest.lng()+"&b2="+northEast.lng()+"&zoom="+map.getZoom
());
});
loadXMLDoc("One.ashx?a1="+southWest.lat()+"&a2="+northEast.lat
()+"&b1="+southWest.lng()+"&b2="+northEast.lng()+"&zoom="+map.getZoom
());
}
}
</script>
</head>
<body onload="initialize()" onunload="GUnload()">

..... 下面的是页面代码

一了吉木

unread,
Sep 10, 2009, 5:33:02 AM9/10/09
to google-map...@googlegroups.com


2009/9/8 脚踏祥云 <wench...@163.com>

代码太长,没仔细看,给你提供一个思路吧,Google MAP API 有一个功能就是根据地址名称获取经纬度的接口,参考http://code.google.com/intl/zh-CN/apis/maps/documentation/services.html#Geocoding_Object

null

unread,
Sep 10, 2009, 6:23:39 AM9/10/09
to 一了吉木, google-maps-api-china
谢谢您,这个API 我怎么没有看到过...我看了好多个.了,谢谢您


在2009-09-10,"一了吉木" <keya...@gmail.com> 写道:
网易邮箱用户购物独享现金返还

zhaoyue_lu

unread,
Sep 10, 2009, 6:56:43 AM9/10/09
to google-maps-api-china
 客气··    都是为了学习 · 没有什么·  。,
 



网易邮箱用户购物独享现金返还

zhaoyue_lu

unread,
Sep 10, 2009, 6:54:22 AM9/10/09
to google-maps-api-china
我还真不知道·  ·
 
 
 我 现在做谷歌地图 · 你知道气泡吗· · 我是想在气泡上加一个超链接  当我点击超链接的时候 给我 弹出个层· ·怎么实现·· 用 JS 写· 你会吗·?

 



网易邮箱用户购物独享现金返还

刘建雄

unread,
Sep 10, 2009, 10:06:45 PM9/10/09
to google-map...@googlegroups.com
你说的气泡,是Marker吧,点击Marker可以打开一个InfoWindow就可以。

2009/9/10 zhaoyue_lu <zhaoy...@126.com>



--
++++++++++++++++++++++++++
Blog: http://cleo.cnblogs.com
凡事从积极的态度做起
@SZ
++++++++++++++++++++++++++

zhaoyue_lu

unread,
Sep 11, 2009, 2:31:29 AM9/11/09
to google-maps-api-china


我知道是气泡  但是你说的太简单了吧 ·  具体点· 最好能有代码

网易邮箱用户购物独享现金返还

穆德海

unread,
Sep 11, 2009, 1:27:19 AM9/11/09
to 谷歌地图 API 论坛
我这里有个地名转坐标的代码
如果你需要联系我
QQ958237121

null

unread,
Sep 11, 2009, 3:31:33 AM9/11/09
to 刘建雄, google-maps-api-china
这个气泡里面可以放一些特别的 体验么 比如显示 一个图层 图层代码是 var tishi="
"; tishi+="
"; tishi+="
海棠公社
"; tishi+="
类型:
" tishi+="
地区:
"; tishi+="
价格:
"; tishi+="
进入社区
"; tishi+="
"; 请问我的代码有错么


在2009-09-11,"刘建雄" <cle...@gmail.com> 写道:
"中国制造",讲述中国60年往事

wenchao2590

unread,
Sep 11, 2009, 3:34:38 AM9/11/09
to google-maps-api-china
<script language="javascript" type="text/javascript">
   // alert(window.location.host);
    var req = null;
    var res = "";
    var map=null;
    var geocoder = null;   
    function processReqChange( ) {
        if (req.readyState == 4 && req.status == 200 ) {
        var c=eval(req.responseText);
            for(var i=0;i<c.length;i++){
                //将叠加层添加到地图中                                                      
                var latlng=new GLatLng(c[i][0],c[i][1]);                                             
                  function createMarker(point) {                
                 // 为所有标记创建指定阴影、图标尺寸灯的基础图标
                    var baseIcon = new GIcon();
                    baseIcon.shadow = "http://www.google.cn/mapfiles/shadow50.png";
                    //baseIcon.iconSize = new GSize(100, 80);      //图标前景图像的像素大小
                    //baseIcon.shadowSize = new GSize(43, 27);    //阴影图像的像素大小。
                    baseIcon.iconAnchor = new GPoint(9, 34);
                    baseIcon.infoWindowAnchor = new GPoint(2, 2);                   
                   var letteredIcon = new GIcon(baseIcon);
                   var ImageUrl=c[i][5];
                   //alert(ImageUrl);
                  letteredIcon.image = ImageUrl;
                  // 设置 GMarkerOptions 对象
                  markerOptions = { icon:letteredIcon };
                  var marker = new GMarker(point, markerOptions);
                  var letter =c[i][2];
                  var mapurl=c[i][4];
                  var tishi="<div id=\"pop\" class=\"pop\"><dl><dt>";
                  tishi+="<img src=\"../images/wojuren/3.png\"  width=\"84\" height=\"91\" border=\"0\" /></dt>";
                  tishi+="<dd><strong>海棠公社</strong></dd>";
                  tishi+="<dd>类型:</dd>"
                  tishi+="<dd>地区:</dd>";
                  tishi+="<dd>价格:</dd>";
                  tishi+="<dd><img src=\"../images/wojuren/4.png\  width=\"18\" height=\"16\" border=\"0\" align=\"absmiddle\" /><span class=\"STYLE1\">进入社区</span></dd>";
                  tishi+="</dl></div>";           
                  GEvent.addListener(marker, "click", function() {
                   // marker.openInfoWindowHtml("这里是<b>" + letter + "</b>"+mapurl);
                   alert(tishi);
                      marker.openInfoWindowHtml(tishi);

                  });
                  return marker;
                }
                map.addOverlay(createMarker(latlng));
                }
        }
    }
    function loadXMLDoc(url) {
      if(window.XMLHttpRequest) {
        try { req = new XMLHttpRequest(); } catch(e) { req = false; }
      }
      else if(window.ActiveXObject)
      {
        try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {
        try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } }
      }
      if(req) {     
        req.onreadystatechange = function() { processReqChange(  ); };
        req.open("GET", url, true);//document.write(url);       
        req.send("");
      }
    }
    function initialize(pointx,pointy,zoom) {  
    var x;
    var y;
    var z;
    if(pointx==null)
    {
         x=30.39;
         y=104.04;
         z=4;      
    }else
    {
        x=pointx;
        y=pointy;
        z=zoom;

    }
      if (GBrowserIsCompatible()) {//判断浏览器是否支持Google API库
      map = new GMap2(document.getElementById("map_canvas")); //生成一个地图 
   
        map.setCenter(new GLatLng(x,y),z);         //设定居中坐标,13级显示....       
                  geocoder = new GClientGeocoder();

        var smallMapControl = new GSmallMapControl();           //地图的放大和缩小(只是生成却没有添加)
        //smallMapControl
        //设定屏幕的左右位置
        var topLeft = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10,10));        //设置 屏幕坐标 -- 左上角               
        var bottomLeft = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(10,10)); //设置 屏幕坐标到 -- 左下角
        //在地图上添加放大和缩小到屏幕的左上角
        map.addControl(smallMapControl,topLeft);
        var bounds = map.getBounds();
        var southWest = bounds.getSouthWest();                //返回矩形西南角的点
        var northEast = bounds.getNorthEast();                //返回矩形东北角的点
        var lngSpan = northEast.lng() - southWest.lng();     //中间坐标
        GEvent.addListener(map, "zoomend", function() {
      loadXMLDoc("One.ashx?a1="+southWest.lat()+"&a2="+northEast.lat()+"&b1="+southWest.lng()+"&b2="+northEast.lng()+"&zoom="+map.getZoom());
        });
         loadXMLDoc("One.ashx?a1="+southWest.lat()+"&a2="+northEast.lat()+"&b1="+southWest.lng()+"&b2="+northEast.lng()+"&zoom="+map.getZoom());        
      }     
    }   
   function showAddress(obj) {
      var address = obj.value;
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert("不能解析: " + address);
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);

            }
          }
        );
      }
    }
    </script>
</head>
<body onload="initialize()" onunload="GUnload()">



"中国制造",讲述中国60年往事

zhaoyue_lu

unread,
Sep 11, 2009, 4:10:19 AM9/11/09
to google-maps-api-china
哎呀·  我也在做这个· 我是在气泡里面加一个超链接· 当我点击超链接的时候弹出个层·~·  要代码·~·  着急!~~~~~ 

"中国制造",讲述中国60年往事

zhaoyue_lu

unread,
Sep 11, 2009, 4:34:36 AM9/11/09
to google-maps-api-china
h哥们· 你 有QQ吗· ·加一下·122592339  或者你吧你 QQ 告诉我· 我 加你· 我现在很着急· 这个活必须要做出来啊·~
"中国制造",讲述中国60年往事
Message has been deleted

zhaoyue_lu

unread,
Sep 11, 2009, 5:02:49 AM9/11/09
to google-maps-api-china
?


 

在2009-09-11 16:49:46,"穆德海" <mudeh...@126.com> 写道:
>还没有权限吗
>你来联系我
>我给你代码
>我已经写好了
>可批量获取
>>



"中国制造",讲述中国60年往事

zhaoyue_lu

unread,
Sep 11, 2009, 12:00:00 PM9/11/09
to google-maps-api-china
在BODY 里面写什么·  没有看见超链接啊·~  我 刚学习地图· 有很多都不懂 ·您最好写的详细点好吗·~  谢谢·



在2009-09-11 15:34:38,wenchao2590 <wench...@163.com> 写道:
网易邮箱用户购物独享现金返还

wenchao2590

unread,
Sep 12, 2009, 2:37:52 AM9/12/09
to google-maps-api-china

你还是去 Google API 上去看吧.因为我跟你说不清楚东西.
 
 
这个是控件介绍,
整个功能需要用刀JavaScript交互的Ajax,



网易邮箱用户购物独享现金返还

zhaoyue_lu

unread,
Sep 13, 2009, 11:34:46 PM9/13/09
to google-maps-api-china
怎么在气泡显示层啊·~· 你们给的答案··我是看懂啊·


在2009-09-11 15:34:38,wenchao2590 <wench...@163.com> 写道:
网易邮箱用户购物独享现金返还

zhaoyue_lu

unread,
Sep 14, 2009, 3:30:03 AM9/14/09
to google-maps-api-china
哈哈· 我做出来了·· 其实很简单·  ·根本用不上你给我的代码··我实现了·不过还是 要谢谢您啊·~ 哈哈·~。


 

在2009-09-11 15:34:38,wenchao2590 <wench...@163.com> 写道:
"中国制造",讲述中国60年往事
Reply all
Reply to author
Forward
0 new messages