谁帮我复制保存成文件调式一下,多次刷新会出现错误导致解析不完全,火狐下没有这个问题!请高手指教啊!急死了<!DOCTYPE html "-//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=gbk"/> 
    <title>goole地图调用</title> 
    <script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=ABQIAAAA5ivwKUZftrXAkd6wgH_u8xSh17N1P-rqlSPaUpL6skQfzKO-yxTtJ3YpLAE-SPQVbSpRmGqmzRb17A&sensor=false&amp;oe=gbk" 
            type="text/javascript"></script> <!--引用Google地图js 密匙key 放到公网上要根据应用网址申请一个-->
   <script type="text/javascript"> 
    var map;
var geocoder;
var address;
var erOptions;
var erOptions2;
var er;
var friends;
var EARTH_RADIUS = 6378.137;
var distance;
var center;
var lat1,lng1,lat2,lng2,j=0;

//获取元素节点
function $(id){
 return document.getElementById(id);
 }
 
 
//自定义初始化方法,完成地图的加载
function initialize(){ 
      if (GBrowserIsCompatible()) { //判断浏览器是否支持
        map = new GMap2($("map")); //new 一个 地图对象
geocoder = new GClientGeocoder();//它的getLatLng()方法可以解析地名为经纬度,通过2点的经纬度可以连线,算距离等
// map.addControl(new GSmallMapControl()); //拖动地图的控件
map.addControl(new GLargeMapControl());
//map.addControl(new GOverviewMapControl());
//用于设置自己的标记选项
var icon = new GIcon(); //图片对象
icon.image = "flag.jpg"; //设置该对象的图片
icon.iconAnchor = new GPoint(0, 20); //图片相对于定点的距离    靠左  靠上
icon.infoWindowAnchor = new GPoint(0, 10); //信息框相对于定点的距离   靠右 靠下erOptions = {icon:icon}; //标记选项 构造GMaker对象时可以应用上 对标记的一些设置  er = new GMarker(new GLatLng(100,200),erOptions)//用于设置好友的标记选项
var icon2 = new GIcon(); 
icon2.image = "home.jpg"; 
icon2.iconAnchor = new GPoint(0, 20); 
icon2.infoWindowAnchor = new GPoint(0, 10); erOptions2 = {icon:icon2}; 
//自己地址
address= $("home").value;//获取表单值
geocoder.getLatLng(address,callback_home);//通过地名获取经纬度,将结果返回给回调方法,返回类型为GLatLng//好友地址
friends=$("friend").value.split(",");//地址数组
for(var i=0;i<friends.length;i++){
geocoder.getLatLng(friends[i],callback_friends);
}  } 
} //处理自己地址
function callback_home(point){
 if (point==null) {
  alert("无法解析:" + address);
  } else {
if(map==null){
map = new GMap2($("map"));
}
  map.setCenter(point, 4);//设置地图视图中心点 
//alert(point.constructor==GLatLng);
    center=point;// ie里报 center为空或不是对象。
  er = new GMarker(point,erOptions2);//new 标记对象
   map.addOverlay(er);//将标记放到地图上 //给标记绑定一个click事件 事件里可以完成显示用户信息的操作 可以使用document.createElement("div")等创建任何html元素
 //er.bindInfoWindow(mydiv);
 
er.bindInfoWindowHtml(address+" "+er.getLatLng().toString());
}}
   
//处理好友地址
function callback_friends(point){  if (point==null) {
  alert("无法解析该地址:"+friends[j]);
  } else {
//alert(point instanceof GLatLng);
   er = new GMarker(point,erOptions);
if(center==null){
alert(center=map.getCenter());
//alert(center);
}
    var polyline = new GPolyline([center, er.getLatLng()]); //产生线的对象 2个经纬度
var GPolyStyleOptions = {opacity:1,color:"blue",weight:2};//线的一些设置,透明度,颜色,粗细

polyline.setStrokeStyle(GPolyStyleOptions);//应用设置
    map.addOverlay(polyline);//将 线放到地图上
   
er.bindInfoWindowHtml(friends[j]+" "+er.getLatLng().toString());//为标记绑定click 事件
//GEvent.addListener(er, "click", function() { 
    //  er.openInfoWindowHtml(er.getLatLng().toString());
//});
 map.addOverlay(er);//把标记放到地图上
//------------------------测距离-------------
//center=map.getCenter();

//alert(center);
   lat1=center.lat();
   lng1=center.lng();
   lat2=er.getLatLng().lat();
   lng2=er.getLatLng().lng();
   distance=getDistance(lat1,lng1,lat2,lng2);
  $("direction").innerHTML += address+"至"+friends[j]+"的距离为:"+distance+" Km<br>";
   j++;
   
  }

} //google maps中通过两点经纬度,计算两点间距离算法    
function rad(d)
{
    return d * Math.PI / 180.0;
}function getDistance( lat1, lng1, lat2, lng2)
{
      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 * EARTH_RADIUS;
      s = Math.round(s * 10000) / 10000;
      
   return s;
}</script> 
 
  </head> 
  <body onload="initialize()" onunload="GUnload()"> 
     <div id="direction" style="border: 1px solid;width: 400px;"></div>
     <div id="map"       style="border: 1px solid;width: 500px; height: 400px;"></div>
 
    <input id="home" value="长沙市" type="hidden">
<input id="friend" value="天津市,西安市,台北市,昆明市,海口市" type="hidden">  </body> 
</html>

解决方案 »

  1.   

    这个有Key的!要传到生成key时填的网站上!有的话贴出地址
      

  2.   

    大哥 我知道啊,我现在是在本地测试啊,跟key有什么关系啊
      

  3.   

    是GOOGLE的JS调用问题,忍吧,毕竟是链接到GOOGLE上面获取的。
      

  4.   

    应该是因为你在地图未加载完成时(isLoaded()返回false)就尝试操作GMAP2对象导致的错误。
    这里这样处理一下就可以了:
    GEvent.addListener(map, 'load', function(){
    //好友地址
    friends=$("friend").value.split(",");//地址数组
        for(var i=0;i<friends.length;i++){
        geocoder.getLatLng(friends[i],callback_friends);    
        }
    });
      

  5.   

    郁闷  谁帮我把下面的代码弄好,在ie6下的问题 地名和点击图标弹出的地名不一致,偶尔加载不完全,楼上说的好像加上了,图都不出了,真不会搞 帮个帮 
    <!DOCTYPE html "-//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=gbk"/> 
        <title>goole地图调用</title> 
        <script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=ABQIAAAA5ivwKUZftrXAkd6wgH_u8xSh17N1P-rqlSPaUpL6skQfzKO-yxTtJ3YpLAE-SPQVbSpRmGqmzRb17A&sensor=true&amp;oe=gbk" 
                type="text/javascript"></script> <!--引用Google地图js 密匙key 放到公网上要根据应用网址申请一个-->
       <script type="text/javascript"> 
        var map;
    var geocoder;
    var address;
    var erOptions;
    var erOptions2;
    var er;
    var friends;
    var EARTH_RADIUS = 6378.137;
    var distance;
    var center=null;
    var lat1,lng1,lat2,lng2;
    var j=0;
    //获取元素节点
    function $(id){
     return document.getElementById(id);
     }
     
     
    //自定义初始化方法,完成地图的加载
    function initialize(){ 
          if (GBrowserIsCompatible()) { //判断浏览器是否支持
            map = new GMap2($("map")); //new 一个 地图对象
    geocoder = new GClientGeocoder();//它的getLatLng()方法可以解析地名为经纬度,通过2点的经纬度可以连线,算距离等
    // map.addControl(new GSmallMapControl()); //拖动地图的控件
    map.addControl(new GLargeMapControl());
    map.addControl(new GOverviewMapControl());
    //用于设置自己的标记选项
    var icon = new GIcon(); //图片对象
    icon.image = "flag.jpg"; //设置该对象的图片
    icon.iconAnchor = new GPoint(0, 20); //图片相对于定点的距离    靠左  靠上
    icon.infoWindowAnchor = new GPoint(0, 10); //信息框相对于定点的距离   靠右 靠下erOptions = {icon:icon}; //标记选项 构造GMaker对象时可以应用上 对标记的一些设置  er = new GMarker(new GLatLng(100,200),erOptions)//用于设置好友的标记选项
    var icon2 = new GIcon(); 
    icon2.image = "home.jpg"; 
    icon2.iconAnchor = new GPoint(0, 20); 
    icon2.infoWindowAnchor = new GPoint(0, 10); erOptions2 = {icon:icon2}; //自己地址
    address= $("home").value;//获取表单值
    geocoder.getLatLng(address,callback_home);//通过地名获取经纬度,将结果返回给回调方法,返回类型为GLatLng//好友地址
    friends=$("friend").value.split(",");//地址数组
    //GEvent.addListener(map, 'load', function(){ 
    for(var i=0;i<friends.length;i++){
    geocoder.getLatLng(friends[i],callback_friends);

    //}
    }
      } 
    } //处理自己地址
    function callback_home(point){ if (point==null) {
      alert("无法解析:" + address);
      } else {
      map.setCenter(point, 4);//设置地图视图中心点 //alert(point.constructor==GLatLng);
        center=point;// ie里报 center为空或不是对象。

      er = new GMarker(point,erOptions2);//new 标记对象
    //erOptions.image="home.jpg";
    //er.setImage("home.jpg");
       map.addOverlay(er);//将标记放到地图上 //给标记绑定一个click事件 事件里可以完成显示用户信息的操作 可以使用document.createElement("div")等创建任何html元素
     
     //er.bindInfoWindow(mydiv);
     
    er.bindInfoWindowHtml(address+" "+er.getLatLng().toString());
    }}
        
    //处理好友地址
    function callback_friends(point){  if (point==null) {
      alert("无法解析该地址:"+friends[j]);
      } else {
    //alert(point instanceof GLatLng);
       er = new GMarker(point,erOptions);
        var polyline = new GPolyline([center, er.getLatLng()]); //产生线的对象 2个经纬度
    var GPolyStyleOptions = { opacity:1,color:"blue",weight:2};//线的一些设置,透明度,颜色,粗细

    polyline.setStrokeStyle(GPolyStyleOptions);//应用设置
        map.addOverlay(polyline);//将 线放到地图上
       
    er.bindInfoWindowHtml(j+" "+friends[j]+" "+er.getLatLng().toString());//为标记绑定click 事件
    //GEvent.addListener(er, "click", function() {     //  er.openInfoWindowHtml(er.getLatLng().toString());
    //});
     map.addOverlay(er);//把标记放到地图上

    //------------------------测距离-------------
    //center=map.getCenter();
    if(center!=null){
    //alert(center);
       lat1=center.lat();
       lng1=center.lng();
       lat2=er.getLatLng().lat();
       lng2=er.getLatLng().lng();
       distance=getDistance(lat1,lng1,lat2,lng2);   $("direction").innerHTML +=address+"至"+friends[j]+"的距离为:"+distance+" Km<br>";
     
       }
      }
    ++j;
    }
     //google maps中通过两点经纬度,计算两点间距离算法    function rad(d)
    {
        return d * Math.PI / 180.0;
    }function getDistance( lat1, lng1, lat2, lng2)
    {
          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 * EARTH_RADIUS;
          s = Math.round(s * 10000) / 10000;
          
       return s;
    }</script> 
      </head> 
      <body onload="initialize()" onunload="GUnload()"> 
         <div id="direction" style="border: 1px solid;width: 400px;"></div>
         <div id="map"       style="border: 1px solid;width: 500px; height: 400px;"></div>
     
        <input id="home" value="长沙市" type="hidden">
    <input id="friend" value="天津市,西安市,台北市,昆明市,海口市" type="hidden">  </body> 
    </html>