地图API论坛月度总结与解答

24 views
Skip to first unread message

李白,字一日

unread,
Nov 16, 2009, 11:03:42 AM11/16/09
to 谷歌地图 API 论坛
为了更好的帮助大家使用google 地图api,一起学习与使用api,
我们将会在这个帖子里将每次GURU会议总结的内容补充上来与大家分享。

李白,字一日

unread,
Nov 16, 2009, 11:13:33 AM11/16/09
to 谷歌地图 API 论坛

2009年8月论坛问题

--Wenxin Ren

问题分类

通过分析问题的内容,我们大概可以将问题归纳成以下几类。

变量、函数作用域,闭包

异步

Map Api使用

域名与API Key

Map API 的高级应用

变量、函数作用域,闭包(一)


闭包:是指函数的内部函数可以调用该函数所定义的变量,即使该函数的调用已经结束。

比如实现一个定时器。

function Timer(){

var timer = null;

function onTimeout(){

if(timer) clearTimeout(timer);

....

timer = setTimeout(onTimeout, 1000);

}

timer = setTimeout(onTimeout, 1000);

}

Time();


变量、函数作用域,闭包(二)

通过GMarker弹出的信息窗口位置不对

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/766e1c9bab9d5fdf

原文描述:
我在地图上标注了多个GMarket,当我点击其中一个Marker得时候会弹出一个InfoWindow窗口,但窗口的位置却不和所点击的
Marker相吻合 ,而且点击不同的Marker弹出的窗口都在同一个位置,为什么会这样?

变量、函数作用域,闭包(三)

原因分析:
javascript的变量,函数作用域问题引起的

解决办法:
1)通过创建一个函数来封装基于当前marker的操作

2)提供闭包,函数作用域问题的解释,让产生错误的开发者弄清楚问题的原因


变量、函数作用域,闭包(三)

示例代码:

function createGMarker(lat, lng, html){
var marker = new GMarker(new GLatLng(lat, lng));
GEvent.addListener(marker, 'click', function(){
this.openInfoWindowHtml(html);
});
return marker;
}

异步(一)

异步:这里主要指代码执行后并不立即返回执行结果的一种代码执行方式。

常见于操作系统的消息机制与网络操作上。

好处:

异步操作不会产生执行的阻塞。

缺点:

异步操作下函数不能马上返回结果,需要对返回事件进行处理。会在一定程度上增加代码的复杂性。

异步(一)


老提示getDistance().meters为空或不是对象,得不到距

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/b60c15c7e995dcc4


问题描述:
代码执行结果地图显示正常,路线信息(div2里的内容)显示正常,就是老提示getDistance().meters为空或不是对象,得不到距
离???

异步(二)


<<script type='text/javascript'>>
document.body.onload = function distance(){
var map = new GMap2(document.getElementById('div1'));
var test = document.getElementById('div2');
map.setCenter(new google.maps.LatLng(39.9493, 116.3975),5);
var directio = new GDirections(map,test);
directio.load('from: 北京 to: 上海');
var dire = directio.getDistance().meters;
}
<</script>>

异步(三)

原因分析:

对于异步函数调用的理解问题


解决办法:

理清异步调用与同步调用的异同

将处理过程放到函数调用完成后。

代码示例:


GEvent.addListener(dir, 'load', function(){
var distance = dir.getDistance().meters
});


Map Api使用(一)

请教如何做一个地址列表与地图中自定义的MARKER关联互动

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/009650ca4ec87d74#


Map Api使用(二)

问题描述:

在网页的左边做一个地址列表,列表上是公司的几十家门店地址,右边是地图,并已经在地图上标注出所有门店
点击地址列表,右边地图会自动定位到相应门店,并弹出消息窗口,内有门店的名称,地址,照片等信息,直接用鼠标点击右边地图中的标注也要有相同的消息窗

请教怎么关联左右两边,还有如何在消息窗口中插入图片,请高人指点谢谢

Map Api使用(三)

原因分析:
对于map api里的GMarker的操作不太熟悉,在与javascript结合时存在问题

解决办法:

1)网友回复:

这个简单
自动定位使用GMap2.panTo()函数,
弹出窗口就使用GMap2.openInfoWindowHtml()函数,
参数是任意HTML字符串,
这样的话就可以随意控制窗口中的内容了
2)最好我们能提供示例供开发者查看学习

Map Api使用(四)


2. 添加一个标记点后,拖动该标记点后,如何获取此标记点的经度和纬度呢?

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/c54e7edc98a793cd


Map Api使用(四)

问题描述:
//拖动
var marker1 = new GMarker(point, {draggable: true});
GEvent.addListener(marker1, "dragstart", function() {
map.closeInfoWindow();
});
GEvent.addListener(marker1, "dragend", function() {
marker1.openInfoWindowHtml("Just bouncing along...");
});
map.addOverlay(marker1);

Map Api使用(五)


原因分析:

对于GMarker的属性的了解不是很足。

解决办法:
通过处理dragend事件来得到新更后的marker的经纬度。

代码示例:


GEvent.addListener(marker1, "dragend", function() {
marker1.openInfoWindowHtml("Just bouncing along...");

var latlng = this.getLatLng();
});

Map Api使用(五)

3.地图标注功能


问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/429481f2579cd5c9


问题描述:

地图上原本有个标注,我现在点按钮新建一个标注,那如何使原来的标注消失。

Map Api使用(五)

原因分析:
对于GMap2.removeOverlay()函数不熟悉


解决办法:
1.记录原marker
2.删除原marker,创建新marker

Map Api使用(六)

代码示例:

var marker = new GMarker();

GEvent.addListener(map, 'click', function(){

if(marker) {

map.removeOverlay(marker);

marker = null;


}

marker = new GMarker();

map.addOverlay(marker);


});

Map Api使用(七)

4.有没有方法实现Map大小的自动设置

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/34b7201648729126


问题描述:

就像google地图那样,地图大小随着浏览器自动变化,占满整个剩余空间?我用的gwt,似乎只支持固定像素大小的设置


Map Api使用(八)


原因分析:
gwt下map api配合的问题


解决办法:
1.对于map的调整可以通过监听window的resize事实来响应窗口的大小变化的问题。

代码示例:

GEvent.addDomListener(window, 'resize', function(){
map.checkResize();
});

2.GWT的解决方案需要有针对性的解决。


Map Api使用(九)

5. 如何开发自己的城市街景

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/c0425aac8628b58b#

问题描述:
请教各位高人:
在下想了解有关google 街景二次应用的问题。我想建立自己的有关某个城市街景的网站,图片自己提供,基于google
streeview。请问google目前有这个功能吗?


Map Api使用(十)

原因分析:

没有仔细阅读API文档

解决办法:
阅读API示例。

地址:http://code.google.com/intl/zh-CN/apis/maps/documentation/
services.html#Streetview

域名与API Key(一)

API Key是长期困扰开发者的一个问题。


开发者经常问的问题包括:

用域名还是用IP注册API KEY?

用域名要用那一个?


对于第一个问题,两者都可以,但是建议用域名。

对于第二个问题, 建议是用根目录,这样只需要注册一次KEY。

域名与API Key(二)

如何设置双域名的API?(或者多域名)

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/5ecd5c9bed6ee256#

原文描述:

我们网站是 www.1.com 域名 和 www.1.com.cn 格式的两个域名,指向同一asp程序网站,我要用到google地图,生成

com的域名key,但用cn域名访问就提示已经被抢注了,反之亦然,两个域名的key都放进去,也会提示域名被抢注。请问该如何操作能确保两个域名

能正常访问!????谢谢!

域名与API Key(二)


原因分析:


多域名与API绑定KEY冲突


解决办法:
1)客户端代码采用动态加载api的办法,同时动态生成 key

2)通过服务器对访问的URL来提供不同的KEY来实现。


前端解决方法:

域名与API Key(三)

代码示例:

function getMapApiKey(url){
var urlKey =
[
{url: 'www.a.com', key: 'asdff7'},
{url: 'www.a1.com', key: 'asdff1'},
{url: 'www.a2.com', key: 'asdff2'}
]
for(var i = 0; i << urlKey.length; i ++){
if(url.indexOf(urlKey[i].url) != -1) return urlKey[i].key;
}
return '';
}

域名与API Key(四)

document.write('<<script type="text/javascript" url="'+ getMapApiKey
(location.href)+'">><</script>>');

Map API 的高级应用(一)

如何实现这样的效果??很多的marker,大大小小 密密麻麻的!

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/69e440ca5c1afac7

问题描述:

大家好
在google地图上搜索餐馆
会根据地图大小显示数量不等的小红点,放到到一定级别后,这些点的数量有点惊人!
并且每个点都可点击,可弹出详细餐馆信息。 (续下)

Map API 的高级应用(二)

(续上)


请问这样的效果如何实现的?
我在本地测试的时候,加载5k个点就把浏览器拖死了
可是看google地图做的,可远不止这个数字

大家打开google地图 输入餐馆 或者银行 滚动鼠标中轮 ,就可以看到效果了

谢谢大家了!!

Map API 的高级应用(三)

原因分析:
一次性加载的GMarker数据量过大, 对Google的操作方式的误解。

Google 网页上的位置并不是通过GMarker画出来的。

而是将Marker画好的图片放在地图上实现的。


解决办法:
1)采用同样的办法,将GMarker放在一张图上。

2)将GMarker按zoom级别来区分。不同级别时得到不同的GMarker数据。
3)在客户端进行缓存,只显示区域内的一部分内容。

Map API 的高级应用(四)

2. 谷歌地图加载标注点的改良


问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/2e45c0c4f5ad79ad

问题描述:

为了使地图的点不至于太多,我就取当前地图视图的东北、西南角的经纬度,在数据库中取在这个范围内的标注点加载显示,并在地图的moveend事件里写
了删除和加载标注点函数,当地图缩放和拖拽时,显示当前范围内的标注点。 (续下)


Map API 的高级应用(五)

现在的问题是,当我点击气泡时,如果这个气泡刚好在边缘的话,map会自动滑动以显示气泡,这就造成了地图的move事件,导致地图重新加载,气泡就

会弹出来,要点击第二次才行

Map API 的高级应用(六)

原因分析:


openInfowindow会重新布置地图的位置。


解决办法:


1)提供自定义的openInfoWindow方法
2)利用变量进行控制


Map API 的高级应用(七)

网友提供的办法:

你可以设置一个变量 infoOpening,

当点击任意一个marker打开infowindow的时候,

把infoOpening = true
moveend 触发时检查infoOpening 是否为true,


if(!infoOpening){
请求新数据
bla bla bla


}

Map API 的高级应用(八)

3.Google地图API问题,如何出现系统找出的路径中的小圆圈 ?

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/79fc869c2371c1bf

Map API 的高级应用(九)

问题描述:

ditu.google.com 当使用搜索路线,制定出发点和目的地之后,系统会画出蓝色的路线。
当鼠标移到这个路线上的时候出现一个小圈圈,并且提示"拖动以更改路线" 。 如果想在自己用Google maps API
创建的地图上也提供类似的功能,该怎么做? API 里面好像没有看到这个说明。。。

Map API 的高级应用(十)

原因分析:
对于javascript与map api的结果要求比较高, 要结合GPolyline与鼠标事件进行处理。然后产生一个GMarker用于拖
曳。


解决办法:
1)找出来离鼠标最近的点,然后指定最短距离,当鼠标与Polyline的距离小于最短距离时,就会画出来一个GMarker.

Map API 的高级应用(十一)

代码示例:

function checkMouse(point){

var minDist = 250; //允许最短距离

var shortDist = 999999; //当前最短距离

var shortIdx = -1;

//选择最短距离点

for(var i = 0; i << points.length; i++){
if (point.distanceFrom(points[i]) << shortDist) {
shortDist = point.distanceFrom(points[i]);
shortIdx = i;

}
}

Map API 的高级应用(十二)

if(shortDist << minDist){

//找到最短距离
dragMarker.show();

dragMarker.setLatLng(points[shortIdx]);
} else {

//未找到最短距离

dragMarker.hide();
}
}

Map API 的高级应用(十三)

4.大家好,作为移动平台的我们应该如何调用Map API 的一些接口

问题地址:

http://groups.google.com/group/google-maps-api-china/browse_thread/thread/78b6a915fac56782

问题描述:
1. 在我严重,Google Map API 总的来说是可以分为两个接口,
一个是地图图像的接口,让我们来获取图像的信息
二就是和地图相关的信息了,比如说一个地点的名字,周围的周边信息等

Map API 的高级应用(十四)

(续)
2. 我是做Android的应用开发的
Google的 Add-On 已经封装好了部分接口,特别是图像的借口,但是在第二个做的还很贫弱。
那么图像这一块搞定了,我应该怎么在我的应用调用Map 上的数据的信息
3. 在网上Map API的页面上,给出的方法都是Javascript封装包里面的,把很多的方法直接封装到Javascript中,
我不知道我怎样才能调用到这些信息
4. 比如说某一路段是否堵车,我想要获取这些信息

Map API 的高级应用(十五)

原因分析:
有些功能API尚未提供功能。

解决办法:

1.等待非javascript版的api

5.能否基于Google map模拟"莫拉克"台风?

问题地址:


http://groups.google.com/group/google-maps-api-china/browse_thread/thread/02e91109f96e5c94


Map API 的高级应用(十六)

原因分析:
对于自然灾害在google地图上的应用的需求


解决办法:
可以尝试提供一套灾害地图解决方案

李白,字一日

unread,
Nov 16, 2009, 11:14:04 AM11/16/09
to 谷歌地图 API 论坛

2009年10月谷歌地图API论坛问题总结

-- Wenxin Ren

论坛总体情况分析

 a.发贴量(60)相比9月份(70)有所减少

  (论坛搜索用户可能相对增加)


 b.问题解答人员日趋多元,积极性提高


 c.非主流兴起或出没(Mobile,flash) 


 d.主流问题百问不厌,偶有强人直接要代码


 e.论坛订阅量(截止发稿时): 1410

当月解答王情况统计排行

当月解答

52 Fei Chen

8 hackwaly

7 Dorian

7 ssoor

6 寒 王

6 Molly

5 李白,字一日

5 woodheadz

5 凤明 王

5 灵魂收割

累计解答

384 Fei Chen


112 xiaoxi

96 李白,字一日

80 badnews

71 Geogle

58 @@

58 Dorian

49 zhang.jingjun

       

45 minc

38 Bright

论坛技术点分布排行

  1.GMarker(12)


  2.GDirections(10 + 1)


  3.地址解析(GClientGeocoder)(8)


  4.其它(与api无直接关系)(6)


  5.通用问题(地形,GPS,更新)(5)


  6.API 帮助(3),其它非官方支持的开发言语(3),台湾(3)


  7.StreetView(2),专业版(2)


  8.V3(1),静态地图API(1),GOverlay(1),KML(1 + 1),Earth( 0 + 1)

技术分析与总结-GMarker(1)

  1.动态显示地图标记时,如何自动显示标记内容?

  2.关于异步预加载标记点的问题 

  3.创建大量的marker时 firefox提示脚本太忙,如果解决呢? 

  4.求助使用google map api时大批量marker(5000多个)造成的延迟严重和内存消耗巨大如何解决 

  5.多个标注互相遮盖的问题 

  6.使用Flex开发google map应用时,如何给每一个生成的marker添加不同的监听器? 

  7.怎么在自定义图标上加文字 

  8.marker.value = number 的意思是什么? 

  9.在地图中添加一个图片标记时怎样再加上名称做描述? 

  10.marker太多,影响视觉效果,怎样实现地图放大到不同级别才陆续显示全部marker 

  11.如何实现marker的淡入淡出效果? 

  12.在地图上添加一个标记找到标记的经纬度   

技术分析与总结-GMarker(2)

a) 大量GMarker问题

    3,4,5,10

b) 闭包,回调,异步问题相关

    1,2,6,8

c) 朴素的API问题(取地址,添文字)

    7,9,12

d) 视觉效果

    11


技术分析与总结-GMarker(2)

大量GMarker问题解决方案:

1.创建时消耗时间

   采用setTimeout实现线程/进程的切换,

     不至于让浏览器卡死

2.显示时太密

   

   分层显示(GTileOverlay),

   

   MarkerClusterer(聚合显示,有网友提供了ie的优化版)


技术分析与总结-GMarker(2)

闭包,回调,异步问题相关解决办法

    

    1.主要在于开发者进一步的熟悉javascript

    2.定期总结论坛上的类似的问题


朴素的问题(取地址,添文字)解决办法


    1.LabeledMarker(问题不支持跟随Marker移动,可以设置相对于原Marker的偏移)

    2.熟悉地图API与javascript

技术分析与总结-GMarker(3)

视觉效果(淡入淡出)的解决


1.通过GMarker.setImage实现

  通过定义一组透明的渐变图片,定时通过setImage顺序更换实现

2.自定义GOverlay实现

    通过控制GOverlay的dom节点的透明度来实现

技术分析与总结-GDirections(1)

  1.google Map API是否支持获取道路节点的经纬度? 

  2.大家好,请教下在map上沿道路画一条路线 

  3.GDirections方法的使用与载入时延问题 

  4.如何得到静态地图的行车路线(综合静态地图)

  5.关于谷歌地图API的例子折线和图标的问题(double)

  6.directions.loadFromWaypoints 和 setCenter 一起出现的一个小问题,请帮看看 

  7.求助:“前往此处”功能如何实现? 

  8.如何用Directions.load()获得一个折线段的数组,里面都是经纬度坐标 

  9.找出范围内的路线

  10.如何从资料库抓资料进gdir.load();

技术分析与总结-GDirections(2)

原因分析:


    a)大部分问题很基础,

        看上去与GDirections相关的文档与示例比较少有关系


    b)通过GDirections实现的很多功能是异步的:

        对于新手来说比较难理解,

        并且示例代码中有一些干扰因素,

        没有比较详细的解释与说明。


解决的办法:

    

      提供更加详细的文档与示例,方便开发者理解与使用


技术分析与总结-GDirections(3)

GDirections基础介绍

    a)GDirections即可以直接与地图对象关联,也可以不与地图对象关联
     关联:

     需要向GDirections对象传入地图对象与相应的展现节点,展现的节点也可以为空

     代码如下:

     var dir = new GDirections(map, domNode);

     当关联地图后,dir的任何变动都会反映在map上,包括线路的变化,标记的变化。

     当domNode传入后,dir变化后的结果将完全清空原dom节点里的任何数据。  

    

    


技术分析与总结-GDirections(4)

关联(续):

     这时很多的默认加载项也是生效的,在相应的回调函数里都是可以得到的。比如getPolyline, getRoute,都在load,
error的回调里有效。

  

不关联:

     var dir = new GDirections();

     这时有两个重要的属性默认将会失效:getPolyline, getRoute。为了能使用getPolyline与getRoute,我
们在加载函数load*的options中需要加入: 

   {

       getPolyline: true,   //任意选取一个或者同时选择

       getSteps: true

   }

技术分析与总结-GDirections(5)

    b)任何一次GDirections都是可能失败的。


    所以我们需要定义两个函数应对,

    分别用于处理成功与失败的情况。


    因为GDirections的操作是异步操作,

    成功与网络有很大的关系,而网络可能是不稳定的,

    同时可能包含一些不确定的随机事件的原因,

    所以我们不能默认GDirections一定能成功执行,

    否则将可能引入潜在的错误风险。

技术分析与总结-GDirections(6)

    一般可以定义成如下的形式:

      function onDirSuc(){

      }

      function onDirFail(){

      }

      分别对应于load, error两个事件

      GEvent.addListener(dir, 'load', onDirSuc);

      GEvent.addListener(dir, 'error', onDirFail);

技术分析与总结-GDirections(7)

    c)明确传入的数据结构

       很多失败的GDirections代码是从不明确怎样传入数据给GDirections开始的.


       GDirections支持两种数据格式:


        1.查询字串

        2.查询数组


       它们的基本结构组成:

            地址

            坐标

技术分析与总结-GDirections(8)

       1)查询字串

            对应的调用函数是dir.load()

            地址形式:

                        "from: 北京 to: 上海"

 "from: Seattle to: San Francisco"

"from: Toronto to: Ottawa to: New York"

            坐标形式:

 "from: 63.192828,-120.130023 to: 56.8032003,-100.1828833"

"from: -80.13532,120.829232 to: 89.12828,78.01822 to:
55.8282,100.020833"

     


技术分析与总结-GDirections(9)

       2)查询数组

           它对应的调用函数是dir.loadFromWaypoints()


           地址形式:

            ['北京', '上海']

               ['Seattle', 'San Francisco']

               ['Toronto', 'Ottawa', 'New York']


           坐标形式:

              ['63.192828,-120.130023', '56.8032003,-100.1828833']

              ['-80.13532,120.829232', '89.12828,78.01822',
'55.8282,100.020833']

技术分析与总结-GDirections(9)

   d)常见问题分析与解决

      最基本的了解与正确的使用之间还存在一定的距离,所以往往需要通过错误促使我们成长。

      1. 多次创建 GMap与 GDirections, 在示例代码影响下,论坛上有会员将示例代码封装在一个函数中,从而实现多次的
GDirections,但同时引入了重复创建的错误。

       解决:

          a)不重复创建不必要的GDirections,

          b)重新组织数据

          c)调用load*

          d)深入了解GDirections的使用方法

  


      

      

技术分析与总结-GDirections(10)

      2.GDirections是异步操作,任何的后续处理都需要在onDirSuc或者onDirFail里实现,很多开发者直接后续处理放
在load*后面,导致无法得到想要的结果。示例


        这里


        1.可以通过传入callback的办法来实现后续处理


        2. 也可以直接通过处理onDirSuc/onDirFail来处理

技术分析与总结-GDirections(11)

      3.GDirections是异步操作,当需要汇集多次的GDirections结果时,处理起来将会比较麻烦。示例


        一个比较通用的办法是:

        1.定义一个处理汇总函数callback

        2.数据化的需要汇总的dir成dirList,将它们的处理函数,是否完成标签按下面的格式 

        [{load: onDirSuc0, error: onDirFail0, flag: false},

         {load: onDirSuc1, error: onDirFail1, flag: false},

              ...

        ]

        3. 在所有的onDirSucX/onDirFailX里将自已对应原flag置位,检测所有的flag是否完成

        4.如果完成调用callback

技术分析与总结-GDirections(12)

   一段取GDirections后Polyline的代码示例:

      // 

      var onDirSuccess = function() {

        var points = [];

        var pol = this.getPolyline();

        var count = pol.getVertexCount();

        for (var i = 0; i « count; i++) {

          var point = pol.getVertex(i);

        }

        //do something

        if (callback)  callback();

      }; //«--注意有分号

技术分析与总结-GDirections(13)

      

      var onDirFailure = function() {

         //do something else

         if (callback)

           callback();

      };

技术分析与总结-GDirections(13)

      var dir = new GDirections();

      GEvent.addListener(dir, 'load', onDirSuccess);

      GEvent.addListener(dir, 'error', onDirFailure);


      var query = "from: 北京 to: 天津";

      dir.load(query, {

         getPolyline : true 

      });

技术分析与总结-GClientGeocoder(1)

  1.google地图是否有这样的功能 

  2.谷歌自己解析出来的精确地址不能通过路线搜索 (综合GDirections)

  3.如何让地图根据不同页面的地址参数自动显示不同的地图? 

  4.有没有能得到我当前位置的地图api (Google Ajax API)

  5.返回无用的坐标,以及Accuracy的数据有误 

  6.前几日发现整个上午无法geocode,今天10点前发现geocode非常慢,而且打开也慢 前几日发现整个上午无法geocode,今天
10点前发现geocode非常慢,而且打开也慢

  7.定点问题 

  8.google地图支持多个地址同时搜索么 

技术分析与总结-GClientGeocoder(2)

a) 功能增强,问题报告,询问型

    1,2,4,5,6

b) 闭包,回调,异步问题相关

    8

c) 朴素的问题(取地址,添文字)

    7

技术分析与总结-GClientGeocoder(3)

问题还是有一定的重复性。


涉及到部分网络问题,


同时对GOOGLE的地图服务提出更高的要求


我们指对性的讨论一些问题。


3.根据不同页面的地址参数自动显示不同的地图


这个问题的关键在于页面地址的获取,然后是使用Geocoder 来解析出来地址,将地图定位到这个地址之上。

技术分析与总结-GClientGeocoder(4)


4.取当前的位置,需要使用google ajax api


var loc = google.loader.ClientLocation; 
loc.latitude && loc.longitude


8.google地图支持多个地址同时搜索么 


建议的办法是一个一个的同步发送请求,

不要异步同时请求多个,这样有可能导到请求失败。

  示例

(完)

2009年10月29日

On Nov 17, 12:13 am, 李白,字一日 <calid...@gmail.com> wrote:
> 2009年8月论坛问题
>
> --Wenxin Ren
>
> 问题分类
>
> 通过分析问题的内容,我们大概可以将问题归纳成以下几类。
>
> 变量、函数作用域,闭包
>
> 异步
>
> Map Api使用
>
> 域名与API Key
>
> Map API 的高级应用
>
> 变量、函数作用域,闭包(一)
>
> 闭包:是指函数的内部函数可以调用该函数所定义的变量,即使该函数的调用已经结束。
>
> 比如实现一个定时器。
>
> function Timer(){
>
>   var timer = null;
>
>   function onTimeout(){
>
>     if(timer) clearTimeout(timer);
>
>     ....
>
>     timer = setTimeout(onTimeout, 1000);
>
>   }
>
>   timer = setTimeout(onTimeout, 1000);
>
> }
>
> Time();
>
> 变量、函数作用域,闭包(二)
>
> 通过GMarker弹出的信息窗口位置不对
>
> 问题地址:
>

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...


>
> Map Api使用(二)
>
> 问题描述:
>
> 在网页的左边做一个地址列表,列表上是公司的几十家门店地址,右边是地图,并已经在地图上标注出所有门店
> 点击地址列表,右边地图会自动定位到相应门店,并弹出消息窗口,内有门店的名称,地址,照片等信息,直接用鼠标点击右边地图中的标注也要有相同的消息窗
> 口
> 请教怎么关联左右两边,还有如何在消息窗口中插入图片,请高人指点谢谢
>
> Map Api使用(三)
>
> 原因分析:
>     对于map api里的GMarker的操作不太熟悉,在与javascript结合时存在问题
>
> 解决办法:
>
>   1)网友回复:
>
> 这个简单
> 自动定位使用GMap2.panTo()函数,
> 弹出窗口就使用GMap2.openInfoWindowHtml()函数,
> 参数是任意HTML字符串,
> 这样的话就可以随意控制窗口中的内容了
>   2)最好我们能提供示例供开发者查看学习
>
> Map Api使用(四)
>
> 2. 添加一个标记点后,拖动该标记点后,如何获取此标记点的经度和纬度呢?
>
> 问题地址:
>

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...


>
> Map Api使用(四)
>
> 问题描述:
>         //拖动
>         var marker1 = new GMarker(point, {draggable: true});
>         GEvent.addListener(marker1, "dragstart", function() {
>           map.closeInfoWindow();
>         });
>          GEvent.addListener(marker1, "dragend", function() {
>           marker1.openInfoWindowHtml("Just bouncing along...");
>         });
>         map.addOverlay(marker1);
>
> Map Api使用(五)
>
> 原因分析:
>
>    对于GMarker的属性的了解不是很足。
>
> 解决办法:
>   通过处理dragend事件来得到新更后的marker的经纬度。
>
> 代码示例:
>
>          GEvent.addListener(marker1, "dragend", function() {
>           marker1.openInfoWindowHtml("Just bouncing along...");
>
>           var latlng = this.getLatLng();
>         });
>
> Map Api使用(五)
>
> 3.地图标注功能
>
> 问题地址:
>

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...


>
> 问题描述:
>
> 地图上原本有个标注,我现在点按钮新建一个标注,那如何使原来的标注消失。
>
> Map Api使用(五)
>
> 原因分析:
>   对于GMap2.removeOverlay()函数不熟悉
>
> 解决办法:
>   1.记录原marker
>   2.删除原marker,创建新marker
>
> Map Api使用(六)
>
> 代码示例:
>
>     var marker = new GMarker();
>
>     GEvent.addListener(map, 'click', function(){
>
>         if(marker) {
>
>           map.removeOverlay(marker);
>
>           marker = null;
>
>         }
>
>      marker = new GMarker();
>
>      map.addOverlay(marker);
>
>     });
>
> Map Api使用(七)
>
> 4.有没有方法实现Map大小的自动设置
>
> 问题地址:
>

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...


>
>     问题描述:
>
> 就像google地图那样,地图大小随着浏览器自动变化,占满整个剩余空间?我用的gwt,似乎只支持固定像素大小的设置
>
> Map Api使用(八)
>
> 原因分析:
>   gwt下map api配合的问题
>
> 解决办法:
>   1.对于map的调整可以通过监听window的resize事实来响应窗口的大小变化的问题。
>
> 代码示例:
>
>   GEvent.addDomListener(window, 'resize', function(){
>     map.checkResize();
>    });
>
>   2.GWT的解决方案需要有针对性的解决。
>
> Map Api使用(九)
>
> 5. 如何开发自己的城市街景
>
> 问题地址:
>

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...


>
> 问题描述:
> 请教各位高人:
>       在下想了解有关google 街景二次应用的问题。我想建立自己的有关某个城市街景的网站,图片自己提供,基于google
> streeview。请问google目前有这个功能吗?
>
> Map Api使用(十)
>
> 原因分析:
>
>   没有仔细阅读API文档
>
> 解决办法:
>   阅读API示例。
>
>   地址:http://code.google.com/intl/zh-CN/apis/maps/documentation/
> services.html#Streetview
>
> 域名与API Key(一)
>
> API Key是长期困扰开发者的一个问题。
>
> 开发者经常问的问题包括:
>
>     用域名还是用IP注册API KEY?
>
>     用域名要用那一个?
>
> 对于第一个问题,两者都可以,但是建议用域名。
>
> 对于第二个问题, 建议是用根目录,这样只需要注册一次KEY。
>
> 域名与API Key(二)
>
> 如何设置双域名的API?(或者多域名)
>
>  问题地址:
>

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...
>
> 原文描述:
>
>   我们网站是www.1.com域名 和www.1.com.cn格式的两个域名,指向同一asp程序网站,我要用到google地图,生成

> http://groups.google.com/group/google-maps-api-china/browse_thread/th...


>
>  问题描述:
>
> 大家好
> 在google地图上搜索餐馆
> 会根据地图大小显示数量不等的小红点,放到到一定级别后,这些点的数量有点惊人!
> 并且每个点都可点击,可弹出详细餐馆信息。 (续下)
>
> Map API 的高级应用(二)
>
> (续上)
>
> 请问这样的效果如何实现的?
> 我在本地测试的时候,加载5k个点就把浏览器拖死了
> 可是看google地图做的,可远不止这个数字

> ...
>
> read more »

Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages