Javascript 通过Google Maps API为lat/long使用变量(来自用户输入)
在浏览器中乱搞GoogleMapsAPI,但是我在输入变量的用户输入时遇到了一些麻烦。基本上,我希望能够通过按下页面上的按钮来输入一个新的lat/long,并将地图移动到该页面上 它不适用于实际的输入变量,但是当我使用注释掉的部分时,它工作得非常好Javascript 通过Google Maps API为lat/long使用变量(来自用户输入),javascript,google-maps,Javascript,Google Maps,在浏览器中乱搞GoogleMapsAPI,但是我在输入变量的用户输入时遇到了一些麻烦。基本上,我希望能够通过按下页面上的按钮来输入一个新的lat/long,并将地图移动到该页面上 它不适用于实际的输入变量,但是当我使用注释掉的部分时,它工作得非常好 <body> <form id = "input" method = "get"> <input type = "text" placeholder = "Latitude" name =
<body>
<form id = "input" method = "get">
<input type = "text" placeholder = "Latitude" name = "user_lat">
<input type = "text" placeholder = "Longitude" name = "user_lng"><br>
<button type = "submit">Mark on Map</button>
</form>
<div id = "map"></div>
<script>
var lat_in = parseFloat($('#user_lat').val());
var lng_in = parseFloat($('#user_lng').val());
/*var lat_in = 37.697948;
var lng_in = -97.314835;*/
function initMap() {
var location = {lat: lat_in, lng: lng_in};
/*var location = {lat: 37.697948, lng: -97.314835};*/
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: location
});
var marker = new google.maps.Marker({
position: location,
map: map
});
}
</script>
<script async defer
src="link with the API key here">
</script>
在地图上标出
var lat_in=parseFloat($('#user_lat').val();
var lng_in=parseFloat($('#user_lng').val();
/*var lat_in=37.697948;
var lng_in=-97.314835*/
函数initMap(){
var位置={lat:lat_in,lng:lng_in};
/*var位置={lat:37.697948,lng:-97.314835}*/
var map=new google.maps.map(document.getElementById('map'){
缩放:13,
中心:位置
});
var marker=new google.maps.marker({
位置:位置,,
地图:地图
});
}
我怀疑这可能与我如何实际使用submit按钮以及我与它的交互方式有关,但我不是100%确定。我查过不同的东西,但我对这方面还是有点陌生。我刚开始涉足javascript,所以我确信有更好的方法可以做到这一点,但我只是想让它发挥作用,以了解它。它不起作用的原因是,当页面首次加载时,位置仍然没有定义,因为还没有任何用户输入,因此无法设置地图中心。我建议采取以下措施:
function initMap() {
var location = {lat: 37.697948, lng: -97.314835};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: location
});
$('#input').on('submit', function(e){
e.preventDefault();
var lat_in = parseFloat($('#user_lat').val());
var lng_in = parseFloat($('#user_lng').val());
location = {lat: lat_in, lng: lng_in};
var marker = new google.maps.Marker({
position: location,
map: map
});
map.panTo(location);
});
}
您可以这样做,添加ChangeListener,然后在ChangePan上单击enter将其添加到该位置
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Directions service</title>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#floating-panel {
position: absolute;
top: 10px;
left: 25%;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
text-align: center;
font-family: 'Roboto','sans-serif';
line-height: 30px;
padding-left: 10px;
}
</style>
</head>
<body>
<div id="floating-panel">
<b>Start: </b>
<input id="start" type="text"
placeholder="Enter lat">
<b>End: </b>
<input id="end" type="text"
placeholder="Enter lng">
</div>
<div id="map"></div>
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: {lat: 0, lng: 0}
});
marker = new google.maps.Marker({
map:map,
draggable:true,
animation: google.maps.Animation.DROP,
position: {lat: 0, lng: 0}
});
var onChangeHandler = function() {
DisplayPoint(map);
};
//document.getElementById('start').addEventListener('change', onChangeHandler);
document.getElementById('end').addEventListener('change', onChangeHandler);
function DisplayPoint(map) {
var lat = document.getElementById('start').value;
var lng = document.getElementById('end').value;
var latLng = new google.maps.LatLng(lat, lng);
marker.setPosition(latLng);
map.panTo(latLng);
}
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=API_KEY_HERE&callback=initMap">
</script>
方向服务
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#地图{
身高:100%;
}
/*可选:使示例页面填充窗口*/
html,正文{
身高:100%;
保证金:0;
填充:0;
}
#浮动面板{
位置:绝对位置;
顶部:10px;
左:25%;
z指数:5;
背景色:#fff;
填充物:5px;
边框:1px实心#999;
文本对齐:居中;
字体系列:“Roboto”,“sans-serif”;
线高:30px;
左侧填充:10px;
}
开始:
完:
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:{lat:0,lng:0}
});
marker=新的google.maps.marker({
地图:地图,
真的,
动画:google.maps.animation.DROP,
位置:{lat:0,lng:0}
});
var onChangeHandler=函数(){
显示点(地图);
};
//document.getElementById('start').addEventListener('change',onChangeHandler);
document.getElementById('end').addEventListener('change',onChangeHandler);
功能显示点(地图){
var lat=document.getElementById('start')。值;
var lng=document.getElementById('end')。值;
var latLng=新的google.maps.latLng(lat,lng);
标记器设置位置(板条);
panTo地图(拉丁美洲);
}
}
这一款与我想象的一模一样!非常感谢。