好的,我正在使用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中的地址更改为用户输入的值。