优步喜欢拖拽地图
uber like draggable map
我正在努力实现像uber一样的地图。它包含拾取位置标记,当我改变标记位置时,它会在我的fromaddress文本框上显示当前地址…但是当我在fromaddress文本框上输入一些地址时我也想改变地图上的标记位置
请谁来帮我做这件事
<script type="text/javascript">
var map;
var marker;
var myLatlng = new google.maps.LatLng('<?php echo $static_lat; ?>','<?php echo $static_lng; ?>');
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();
function initialize(){
var mapOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), mapOptions);
marker = new google.maps.Marker({
map: map,
position: myLatlng,
draggable: true
});
geocoder.geocode({'latLng': myLatlng }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
$('#fromlat,#fromlong').show();
$('#fromaddress').val(results[0].formatted_address);
$('#fromlat').val(marker.getPosition().lat());
$('#fromlong').val(marker.getPosition().lng());
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
}
}
});
google.maps.event.addListener(marker, 'dragend', function() {
geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
$('#fromaddress').val(results[0].formatted_address);
$('#fromlat').val(marker.getPosition().lat());
$('#fromlong').val(marker.getPosition().lng());
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
}
}
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
只需创建viewmap函数并在按下键后调用。
<script type="text/javascript">
var map;
var marker;
var infowindow = new google.maps.InfoWindow();
var geocoder = new google.maps.Geocoder();
function initialize() {
var location = document.getElementById('PoolLocation');
var autocomplete = new google.maps.places.Autocomplete(location);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
//document.getElementById('PoolLocation').value = place.name;
document.getElementById('PoolLatitude').value = place.geometry.location.lat();
document.getElementById('PoolLongitude').value = place.geometry.location.lng();
viewMap(place.geometry.location.lat(),place.geometry.location.lng());
});
}
function viewMap(lat,lng){
var myLatlng = new google.maps.LatLng(lat,lng);
var myOptions = {
zoom: 14,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
draggable: true,
position: myLatlng,
map: map,
title: "Your location"
});
var formatted_address = 'Select Pickup location';
infowindow.setContent(formatted_address);
infowindow.open(map, marker);
google.maps.event.addListener(marker, 'dragend', function (event) {
geocodePosition(marker.getPosition());
document.getElementById("PoolLatitude").value = this.getPosition().lat();
document.getElementById("PoolLongitude").value = this.getPosition().lng();
});
function geocodePosition(pos) {
var geocoder= new google.maps.Geocoder();
geocoder.geocode({
latLng: pos
}, function(responses) {
if (responses && responses.length > 0) {
document.getElementById("PoolLocation").value = responses[0].formatted_address;
}
});
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
相关文章:
- 谷歌地图固定位置覆盖
- 不显示带有本地json文件数据的谷歌地图脚本
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 谷歌地图标记不会显示
- 无法在JS中显示谷歌地图
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 在谷歌地图上获取事件的x,y坐标
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 模拟谷歌地图中的点击
- 如何知道哪个标记被谷歌地图点击了
- 谷歌地图JS API+JSON-多个标记没有显示
- 缓存谷歌地图数据
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 在谷歌地图上绘制位置数据库
- 标记的实时更新,无需加载页面谷歌地图API V3
- 谷歌地图融合表API SQL“;“喜欢”;命令不起作用
- 优步喜欢拖拽地图