首页 新闻 搜索 专区 学院

关于百度地图API问题

0
悬赏园豆:20 [已解决问题] 解决于 2014-10-11 15:25

关于百度地图API问题:怎样批量将地址准换成坐标?

什么时候会调用localSearch.setSearchCompleteCallback函数?如果转换不成功怎么判断?如果批量转换的话,怎样才能识别那个坐标是那个地址的?

var map = new BMap.Map("container"); 

var localSearch = new BMap.LocalSearch(map);

var keyword="深圳市世界之窗";

localSearch.setSearchCompleteCallback(function (searchResult) {
var poi = searchResult.getPoi(0);
if(poi==""||poi==null)   
{alert(123);return;}
document.getElementById("result").innerHTML += poi.point.lng + "," + poi.point.lat+ "</br>";
});

localSearch.search(keyword);

banyan.rong的主页 banyan.rong | 初学一级 | 园豆:67
提问于:2014-10-10 20:33
< >
分享
最佳答案
0

给你个例子吧,其实就是官网的例子。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <title>批量地址</title>
    <style type="text/css">
        body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
        #l-map{height:300px;width:100%;}
        #r-result{width:100%; font-size:14px;line-height:20px;}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=LXtbxUBZfNBXjuwrAljAiHIo"></script>
</head>
<body>
    <div id="l-map"></div>
    <div id="r-result">
        <input type="button" value="批量地址解析" onclick="bdGEO()" />
        <div id="result"></div>
    </div>
</body>
</html>
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("l-map");
    map.centerAndZoom(new BMap.Point(117.269945,31.86713), 13);
    map.enableScrollWheelZoom(true);
    var index = 0;
    var myGeo = new BMap.Geocoder();
    var adds = [
        "包河区金寨路1号(金寨路与望江西路交叉口)",
        "庐阳区凤台路209号(凤台路与蒙城北路交叉口)",
        "蜀山区金寨路217号(近安医附院公交车站)",
        "蜀山区梅山路10号(近安徽饭店) ",
        "蜀山区 长丰南路159号铜锣湾广场312室",
        "合肥市寿春路93号钱柜星乐町KTV(逍遥津公园对面)",
        "庐阳区长江中路177号",
        "新站区胜利路89"
    ];
    function bdGEO(){
        var add = adds[index];
        geocodeSearch(add);
        index++;
    }
    function geocodeSearch(add){
        if(index < adds.length){
            setTimeout(window.bdGEO,400);
        } 
        myGeo.getPoint(add, function(point){
            if (point) {
                document.getElementById("result").innerHTML +=  index + "" + add + ":" + point.lng + "," + point.lat + "</br>";
                var address = new BMap.Point(point.lng, point.lat);
                addMarker(address,new BMap.Label(index+":"+add,{offset:new BMap.Size(20,-10)}));
            }
        }, "合肥市");
    }
    // 编写自定义函数,创建标注
    function addMarker(point,label){
        var marker = new BMap.Marker(point);
        map.addOverlay(marker);
        marker.setLabel(label);
    }
</script>
收获园豆:20
GisClub | 菜鸟二级 |园豆:330 | 2014-10-11 09:37

这个Demo我试过了,虽然地址都可以解析成坐标,但是有时候会偏差比较严重(与百度地图拾取系统比较)

banyan.rong | 园豆:67 (初学一级) | 2014-10-11 11:21

@banyan.rong: 坐标偏移 是需要自己用偏移工具纠偏的 不可能获得的就是准确的  这个的自己实现

GisClub | 园豆:330 (菜鸟二级) | 2014-10-11 11:29

@GisClub: 那有没有免费的偏移工具?

banyan.rong | 园豆:67 (初学一级) | 2014-10-11 11:31

@banyan.rong: 我好久没有干这个  现在手里也没什么存货了,你上网上搜搜吧,我记得有人得出了百度偏移算法,你找找。

GisClub | 园豆:330 (菜鸟二级) | 2014-10-11 11:32

@GisClub: 好的,非常感谢

banyan.rong | 园豆:67 (初学一级) | 2014-10-11 11:34

@GisClub,根据城市获取中心点,怎么弄的?根据官网的代码本机运行获取不到,多谢!

 

<script type="text/javascript">
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398, 39.897445);
map.centerAndZoom(point, 11);

function myFun(result) {
var cityName = result.name;
map.setCenter(cityName);
alert("当前定位城市:" + cityName);
map.centerAndZoom('上海市', 11);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);

</script>

blue-K2 | 园豆:200 (初学一级) | 2015-03-09 18:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册