我使用函数getAddress()
来获取所提供坐标的地址。如何确保函数的返回值可以在php中回显?
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=yourAPIkey"></script>
<script type="text/javascript">
function GetAddress(lat,lng) {
var lat = parseFloat(lat);
var lng = parseFloat(lng);
var latlng = new google.maps.LatLng(lat, lng);
var geocoder = geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
var addr = results[0].formatted_address;
return addr;
}
}
});
}
</script>
<?php
$lng = 103.72;
$lat = 1.34628;
echo "<script type='text/javascript'>",
"GetAddress(",$lat,",",$lng,");",
"</script>";
?>
</html>
答案 0 :(得分:5)
你将把JS脚本回显到你的页面的var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d');
show_image();
function show_image() {
source_image = new Image();
source_image.src = 'https://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png';
source_image.onload = function () {
context.drawImage(source_image, 100, 100);
}
}
而不是结果,所以我建议你添加一个结果容器,然后把数据放在里面,如:
echo
希望这有帮助。
答案 1 :(得分:4)
如果你要做的就是写函数调用的输出(根据你最近的评论回复),你可以这样做:
$lng = 103.72;
$lat = 1.34628;
echo "<script type='text/javascript'>document.write(GetAddress(",$lat,",",$lng,"));</script>";
因此,无论何时调用GetAddress
,您都会看到输出。
或者,如果您需要定位要显示结果的特定区域,请参阅Zakaria Acharki
更新后的答案。
我个人会避免混合使用php和javascript而只是在php中做所有事情。
例如;
<?php
// Config
define('API_KEY', 'yourAPIkey');
// Helper function to geodecode lat/lng
function getFormattedAddress($lat, $lng) {
$result = json_decode(file_get_contents("https://maps.google.com/maps/api/geocode/json?key=". API_KEY ."&latlng=$lat,$lng"));
if ($result->status == 'OK') {
return $result->results[0]->formatted_address;
}
return 'Invalid lat/lng coordinates';
}
// Usage
$lat = 40.714224;
$lng = -73.961452;
echo getFormattedAddress($lat, $lng);
?>
输出:277 Bedford Ave, Brooklyn, NY 11211, USA
所以,你的php脚本有lat
,lng
坐标,所以你可以调用php函数,只需一次渲染结果。
P.S。你应该避免在你的问题中发布你的API密钥;人们可能会滥用它;)