Php 如何使谷歌地图代码在加载城市、州下无需先加载LatLong?
下面的代码将显示用户从网站上一页选择的城市、州。然而,map首先加载LatLong位置,然后打开city、state。如何消除LatLong变量,使其不加载?只是想展示城市、州Php 如何使谷歌地图代码在加载城市、州下无需先加载LatLong?,php,javascript,Php,Javascript,下面的代码将显示用户从网站上一页选择的城市、州。然而,map首先加载LatLong位置,然后打开city、state。如何消除LatLong变量,使其不加载?只是想展示城市、州 <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> html { heigh
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&sensor=false"></script>
<script type="text/javascript">
var geocoder;
var map;
var marker;
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
geocoder = new google.maps.Geocoder();
marker = new google.maps.Marker({
map: map,
draggable: true
});
showAddress('"<?php echo $_SESSION['city_name']; ?>"');
}
function showAddress(address) {
geocoder.geocode({'address': address}, function(results, status) {
if (status != google.maps.GeocoderStatus.OK) {
return;
}
if (results.length > 1) {
alert('Multiple addresses found; showing first one ...');
}
$.each(results, function(i, item) {
var location = new google.maps.LatLng(item.geometry.location.lat(), item.geometry.location.lng());
marker.setPosition(location);
map.setCenter(location);
return false;
});
});
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>
html{高度:100%}
正文{高度:100%;边距:0;填充:0}
#地图画布{高度:100%}
var地理编码器;
var映射;
var标记;
函数初始化(){
var latlng=新的google.maps.latlng(-34.397150.644);
变量映射选项={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
geocoder=新的google.maps.geocoder();
marker=新的google.maps.marker({
地图:地图,
德拉格布尔:是的
});
showAddress(““””);
}
函数showAddress(地址){
geocoder.geocode({'address':address},函数(结果,状态){
if(status!=google.maps.GeocoderStatus.OK){
返回;
}
如果(results.length>1){
警报('找到多个地址;显示第一个…');
}
$。每个(结果、功能(i、项目){
var location=new google.maps.LatLng(item.geometry.location.lat(),item.geometry.location.lng());
标记器。设置位置(位置);
地图设置中心(位置);
返回false;
});
});
}
你知道,你总能找到你要寻找的特定城市的lat长度,并将其放大到合适的高度,使该区域适合你的视野。我就是这么用的
或者,您可以使用地理编码器结果向latlang发送值
因此,在初始化地图之前,需要调用geocoder.geocode()
使用代码中已有的行:
var location = new google.maps.LatLng(item.geometry.location.lat(), item.geometry.location.lng());
然后将其放在以下位置之后:
var latlng = location;
然后使用latlng初始化映射
因此,您的代码应该如下所示:
<script type="text/javascript">
var geocoder;
var map;
var marker;
function initialize() {
/*Go through the following to understand what I'm trying to get at.*/
var address = "<?php echo $_SESSION['city_name']; ?>";
geocoder = new google.maps.Geocoder(); // This was removed from below. Compare with your code.
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latlang = results[0].geometry.location; }
else { alert("The location cannot be mapped"); }
});
/* Up until here. */
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
marker = new google.maps.Marker({
map: map,
draggable: true
});
showAddress('"<?php echo $_SESSION['city_name']; ?>"');
}
function showAddress(address) {
geocoder.geocode({'address': address}, function(results, status) {
if (status != google.maps.GeocoderStatus.OK) {
return;
}
if (results.length > 1) {
alert('Multiple addresses found; showing first one ...');
}
$.each(results, function(i, item) {
var location = new google.maps.LatLng(item.geometry.location.lat(), item.geometry.location.lng());
marker.setPosition(location);
map.setCenter(location);
return false;
});
});
}
</script>
var地理编码器;
var映射;
var标记;
函数初始化(){
/*通过以下步骤来理解我想要表达的意思*/
var地址=”;
geocoder=new google.maps.geocoder();//这已从下面删除。请与您的代码进行比较。
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
var latlang=results[0]。geometry.location;}
else{alert(“无法映射位置”);}
});
/*直到这里*/
变量映射选项={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
marker=新的google.maps.marker({
地图:地图,
德拉格布尔:是的
});
showAddress(““””);
}
函数showAddress(地址){
geocoder.geocode({'address':address},函数(结果,状态){
if(status!=google.maps.GeocoderStatus.OK){
返回;
}
如果(results.length>1){
警报('找到多个地址;显示第一个…');
}
$。每个(结果、功能(i、项目){
var location=new google.maps.LatLng(item.geometry.location.lat(),item.geometry.location.lng());
标记器。设置位置(位置);
地图设置中心(位置);
返回false;
});
});
}
这应该行得通 在“变量位置=…”之后插入“变量位置=…”。得到相同的结果:latlng坐标图首先显示城市,然后打开州。然后使用latlng进行初始化?怎么做?清楚我想做什么吗?用户从上一页选择城市、州。他们的选择在上面代码的下一页上发布。位置显示在地图上。除了代码中的latlng坐标短暂显示,然后显示用户选择的城市外,此操作有效。只想城市出现而已。怎么做?我已经更新了答案。基本上,我在初始化地图之前调用geocoder.geocode。这样我就可以在地图初始化之前得到城市的坐标。然后,对于map center属性,我使用已保存到latlang变量的geocoder信息。在geocoder.geocode行之后获取“uncaughtreferenceerror:address is not defined”。我错过了什么?谢谢。@jhar来自您的代码:
showAddress(““””)代码>该php行基本上将地址发送到showAddress函数。因此,在geocoder.geocode({'address':address})之前,函数(结果、状态)
添加以下内容:var address=“”;