博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正向地理编码-根据输入地址获取经纬度
阅读量:5129 次
发布时间:2019-06-13

本文共 3521 字,大约阅读时间需要 11 分钟。

1.使用的是高德地图,(鼠标指向显示提示详细信息),运行效果:

2.前端代码

<!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 charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>正向地理编码</title>
    <link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>
    <style>
    html,body {
        width: 100%;
        height: 100%;
        margin:0;
    }
    #container {
        height: 500px;
        width:100%
    }
    #operation
    {
        position: absolute;
        top: 505px;
        width: 100%;
    }
    #input {
        position: absolute;
        left: 3px;
        width: 45%;
    }
    #address {
        height: 250px;
        width: 86%;
        font-size: 14px;
    }
    #location
    {
        vertical-align: top;
    }
    #show {
        position: absolute;
        right: 3px;
        width: 54%;
    }
    #showAddress {
        height: 250px;
        width: 86%;
    }
    </style>
    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.9&key=xxx&plugin=AMap.Geocoder"></script>
    <script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
    <script src="jquery-1.10.2.min.js" type="text/javascript"></script>
</head>
<body>
<div id="container"></div>
<div id="operation"><b>根据输入获取经纬度,为了定位更加精确,请尽可能输入详细地址。<font color="red">输入多个地址时、每个地址以回车结束</font></b>
    <div id="input">
        <textarea id="address" placeholder="请至少输入一个地址"></textarea>
        <button id="location"> 开 始 定 位 </button>
    </div>
    <div id="show"><font color="red"><b>坐标信息</b></font><br/>
    </div>
</div>
<script type="text/javascript">
    var googleLayerf = new AMap.TileLayer({
        getTileUrl: 'http://mt{1,2,3,0}.google.cn/vt/lyrs=s&hl=zh-CN&gl=cn&x=[x]&y=[y]&z=[z]&s=Galile'
    });
    var roadNetLayerf = new AMap.TileLayer.RoadNet();
    var map = new AMap.Map("container", {
        resizeEnable: true,
        zoom: 4,
        zooms: [3, 21],
        layers: [googleLayerf, roadNetLayerf]
    });
    function geocoder(addressArray) {
        var geocoder = new AMap.Geocoder({
            city: "全国",
            radius: 1000
        });
        $.each(addressArray, function (index, value) {
            geocoder.getLocation(value, function (status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    geocoder_CallBack(value, result);
                }
            });
        });
    }
    function addMarker(i, d) {
        var marker = new AMap.Marker({
            map: map,
            position: [d.location.getLng(), d.location.getLat()]
        });
        var infoWindow = new AMap.InfoWindow({
            content: d.formattedAddress + "<br/>坐标:" + d.location.getLng() + ',' + d.location.getLat(),
            offset: { x: 0, y: -30 }
        });
        marker.on("mouseover", function (e) {
            infoWindow.open(map, marker.getPosition());
        });
    }
    function geocoder_CallBack(value, result) {
        var resultStr = "";
        var geocode = result.geocodes;
        for (var i = 0; i < geocode.length; i++) {
            resultStr += "<b>原始地址:</b>" + value + "" + ",&emsp;&emsp;<b>坐标:</b>" + geocode[i].location.getLng() + ", " + geocode[i].location.getLat() + ",&emsp;&emsp;<b>格式地址:</b>" + geocode[i].formattedAddress + "<br/>";
            addMarker(i, geocode[i]);
        }
        map.setFitView();
        $('#show').append(resultStr);
    }
    $(function() {
        $('#location').click(function() {
            var tempStr = $('#address').val();
            if (tempStr == null || tempStr == "") {
                alert('请至少输入一个地址');
                return false;
            }
            tempStr = $.trim(tempStr);
            if (tempStr.length == 0) {
                alert('请至少输入一个地址');
                return false;
            }
            var addressArray = tempStr.split('\n');
            if (addressArray == null || addressArray.length == 0) {
                alert('请至少输入一个地址');
                return false;
            }
            $('#show').html('<font color="red"><b>坐标信息</b></font><br/>');
            map.clearMap();
            geocoder(addressArray);
        });
    });
</script>
</body>
</html>

转载于:https://www.cnblogs.com/jeff151013/p/11172040.html

你可能感兴趣的文章
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
STM32单片机使用注意事项
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
移动开发平台-应用之星app制作教程
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>