Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在搜索的位置设置多边形?_Javascript_Jquery_Google Maps - Fatal编程技术网

Javascript 如何在搜索的位置设置多边形?

Javascript 如何在搜索的位置设置多边形?,javascript,jquery,google-maps,Javascript,Jquery,Google Maps,问题是当我搜索一个位置时,我没有得到搜索位置上的多边形 下面图片中的示例 如何设置多边形在搜索位置上的位置 我在这个脚本中设置了默认位置的多边形。每当我搜索位置时,多边形应该放在那个里,这样我就可以设置那个位置的lat long。 在第二张图片中,我缩小了在默认位置找到多边形的地图。多边形应移动到搜索的位置 函数initAutocomplete(){ var map=new google.maps.map(document.getElementById('map'){ 中心:{lat:30

问题是当我搜索一个位置时,我没有得到搜索位置上的多边形

下面图片中的示例

如何设置多边形在搜索位置上的位置

我在这个脚本中设置了默认位置的多边形。每当我搜索位置时,多边形应该放在那个里,这样我就可以设置那个位置的lat long。 在第二张图片中,我缩小了在默认位置找到多边形的地图。多边形应移动到搜索的位置


函数initAutocomplete(){
var map=new google.maps.map(document.getElementById('map'){
中心:{lat:30.3753,lng:69.3451},
缩放:6,
mapTypeId:“路线图”
});
//创建搜索框并将其链接到UI元素。
var input=document.getElementById('search_location');
var searchBox=newgoogle.maps.places.searchBox(输入);
//map.controls[google.maps.ControlPosition.TOP_LEFT].push(输入);
//将搜索框结果偏向当前地图的视口。
addListener('bounds_changed',function(){
searchBox.setBounds(map.getBounds());
});
var标记=[];
//侦听用户选择预测并检索时激发的事件
//关于那个地方的更多细节。
searchBox.addListener('places\u changed',function(){
var places=searchBox.getPlaces();
如果(places.length==0){
返回;
}
//清除旧的标记。
markers.forEach(函数(marker){
marker.setMap(空);
});
标记=[];
//对于每个位置,获取图标、名称和位置。
var bounds=new google.maps.LatLngBounds();
地点。forEach(功能(地点){
如果(!place.geometry){
log(“返回的位置不包含几何图形”);
返回;
}
变量图标={
url:place.icon,
大小:新谷歌地图大小(71,71),
来源:新google.maps.Point(0,0),
主播:新google.maps.Point(17,34),
scaledSize:new google.maps.Size(25,25)
};
//为每个地方创建一个标记。
markers.push(新的google.maps.Marker)({
地图:地图,
图标:图标,
标题:place.name,
位置:place.geometry.location
}));
if(place.geometry.viewport){
//只有地理代码具有视口。
联合(place.geometry.viewport);
}否则{
扩展(place.geometry.location);
}
变量arrCoords=[
新的google.maps.LatLng(32.3753,64.3451),
新的google.maps.LatLng(30.3753,66.3451),
新的google.maps.LatLng(30.3753,65.3451),
新的google.maps.LatLng(29.3753,63.3451),
//新google.maps.LatLng(51.477654,-0.002192)
];
var polygon=新建google.maps.polygon({
是的,
路径:arrCoords,
strokeColor:#FF0000“,
笔划不透明度:0.8,
冲程重量:2,
fillColor:#FF0000“,
不透明度:0.35,
地图:地图,
真的,
测地线:正确,
});
google.maps.event.addListener(多边形,'dragend',函数(evt){
log(evt.latLng.lat(),'--',evt.latLng.lng());
});
//google.maps.event.addListener(polygon.getPath(),'insert_at',函数(index,obj){
//log('从内部路径移除顶点');
//log(obj.lat(),'--',obj.lng());
// });
google.maps.event.addListener(polygon.getPath(),'set_at',函数(index,obj){
log('顶点在外部路径上移动');
log(obj.lat(),'--',obj.lng());
var数组=[];
Array.push(obj.lat(),obj.lng(),obj.lat(),obj.lng());
$('lat_long').val(JSON.stringify(数组));
var值=$('#lat_long').val();
value=JSON.parse(value);
});
//在地图上定义一个信息窗口。
infoWindow=new google.maps.infoWindow();
});
映射边界(bounds);
});
}

一个选项是移动多边形,使其以自动完成结果返回的坐标为中心:

var polybnds = new google.maps.LatLngBounds();
for (var i = 0; i < polygon.getPath().getLength(); i++) {
  polybnds.extend(polygon.getPath().getAt(i));
}
var polyCenter = polybnds.getCenter();
// center polygon on first marker
var distance = google.maps.geometry.spherical.computeDistanceBetween(polyCenter, markers[0].getPosition());
var heading = google.maps.geometry.spherical.computeHeading(polyCenter, markers[0].getPosition());
var path = [];
polybnds = new google.maps.LatLngBounds();
for (var i = 0; i < polygon.getPath().getLength(); i++) {
  var pt = google.maps.geometry.spherical.computeOffset(polygon.getPath().getAt(i), distance, heading);
  path.push(pt);
  polybnds.extend(pt);
}
polygon.setPath(path);

函数initAutocomplete(){
var map=new google.maps.map(document.getElementById('map'){
中心:{
拉脱维亚:30.3753,
液化天然气:69.3451
},
缩放:6,
mapTypeId:“路线图”
});
//创建搜索框并将其链接到UI元素。
var input=document.getElementById('search_location');
var searchBox=newgoogle.maps.places.searchBox(输入);
//map.controls[google.maps.ControlPosition.TOP_LEFT].push(输入);
//将搜索框结果偏向当前地图的视口。
addListener('bounds_changed',function(){
searchBox.setBounds(map.getBounds());
});
var标记=[];
//侦听用户选择预测并检索时激发的事件
//关于那个地方的更多细节。
searchBox.addListener('places\u changed',function(){
var places=searchBox.getPlaces();
如果(places.length==0){
返回;
}
//清除
var polybnds = new google.maps.LatLngBounds();
for (var i = 0; i < polygon.getPath().getLength(); i++) {
  polybnds.extend(polygon.getPath().getAt(i));
}
var polyCenter = polybnds.getCenter();
// center polygon on first marker
var distance = google.maps.geometry.spherical.computeDistanceBetween(polyCenter, markers[0].getPosition());
var heading = google.maps.geometry.spherical.computeHeading(polyCenter, markers[0].getPosition());
var path = [];
polybnds = new google.maps.LatLngBounds();
for (var i = 0; i < polygon.getPath().getLength(); i++) {
  var pt = google.maps.geometry.spherical.computeOffset(polygon.getPath().getAt(i), distance, heading);
  path.push(pt);
  polybnds.extend(pt);
}
polygon.setPath(path);