将诸如“;纽约水牛城”;使用Google Maps API将地图转换为纬度和经度

Converting a location such as "Buffalo, New York" to Latitude and Longitude using the Google Maps API

本文关键字:地图 经度 API 转换 纬度 Maps 使用 纽约 水牛城 Google      更新时间:2023-10-06

好的,我正在使用Google Maps API,我需要转换我的用户输入的位置,使用API将其转换为纬度/经度。到目前为止,我只有一些PHP,但我不确定如何将其实现到javascript等中。

    <?php
$coords = toCoordinates("88 Main St. New York New York USA");
function toCoordinates($address)
{
    $bad = array(
        " " => "+",
        "," => "",
        "?" => "",
        "&" => "",
        "=" => ""
    );
    $address = str_replace(array_keys($bad), array_values($bad), $address);
    $data = new SimpleXMLElement(file_get_contents("http://maps.google.com/maps/geo?output=xml&q={$address}"));
    $coordinates = explode(",", $data->Response->Placemark->Point->coordinates);
    return array(
        "latitude" => $coordinates[0],
        "longitude" => $coordinates[1]
    );
}
?>

谢谢!

first you have to create the xml and after that pass the xml to the javascript stated below

    <?xml version="1.0" encoding="UTF-8"?>
<markers>
    <marker Company_Name="Company Name" address="Address" lat="39.74259" lng="-104.98359" type="comp"/>
    <marker Company_Name="Company Name" address="Address" lat="39.6823891" lng="-104.9373677" type="comp"/>
</markers>


<script src="https://maps.google.com/maps/api/js?sensor=false"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var customIcons = {
comp: {
icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=<?php echo $allcompanyaddress[8];?>|FF0000|000000',
shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
},
};
function myload() {
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(<?php echo $info['latitude']; ?>,  <?php echo $info['longitude'];?>),
zoom: 10,
mapTypeId: 'roadmap'
});
var infoWindow = new google.maps.InfoWindow;
// Change this depending on the name of your PHP file
// downloadUrl("<?php echo base_url();?>user_jobplacement/googlemap_record/'", function(data) {
downloadUrl("URL of your XML", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("Company_Name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var broker = markers[i].getAttribute("broker");
var phone  = markers[i].getAttribute("phone");
var paid   = markers[i].getAttribute("paid");
  var html = "<b>" + name + "</b> <br/>" + address;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
}
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'mouseover', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
window.onload = myload;
//]]>
</script>
<div id="map" style="width: 500px; height: 338px"></div>

您尝试过使用JQuery吗?您只需要将GET与以下参数(在您的情况下为地址)一起使用:

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $.get(
                "http://maps.googleapis.com/maps/api/geocode/json?address=88 Main St. New York New York USA&sensor=true",
                function(data) {
                    console.log(data);
                }
        );
    });
    </script>
</head>
</html>

作为回报,您可以获得数据变量(对象)中的所有内容,您可以简单地从中提取纬度和经度。对于您的情况,请将URL中的地址更改为用户输入的值。