Google maps 根据google.maps.Polygon的中心点和尺寸绘制一个矩形
我正在编写一个PHP脚本,它接受XML输入,解析它,然后显示(最终旋转)矩形和椭圆区域 因为区域可以旋转,所以我必须使用Google maps 根据google.maps.Polygon的中心点和尺寸绘制一个矩形,google-maps,google-maps-api-3,polygon,Google Maps,Google Maps Api 3,Polygon,我正在编写一个PHP脚本,它接受XML输入,解析它,然后显示(最终旋转)矩形和椭圆区域 因为区域可以旋转,所以我必须使用google.maps.Polygon而不是Rectangle 要处理旋转,我希望使用库(该部分稍后提供) 我的问题是:从给定的XML输入中,我只知道矩形中心点的坐标和区域的尺寸(宽度和高度) 当前,我仅将中心点显示为标记: 我的问题是:当只有中心点的纬度和经度以及宽度和高度已知时,如何使用google.maps.Polygon绘制矩形 即,如何计算4个端点的纬度和经度 我可
google.maps.Polygon
而不是Rectangle
要处理旋转,我希望使用库(该部分稍后提供)
我的问题是:从给定的XML输入中,我只知道矩形中心点的坐标和区域的尺寸(宽度和高度)
当前,我仅将中心点显示为标记:
我的问题是:当只有中心点的纬度和经度以及宽度和高度已知时,如何使用google.maps.Polygon
绘制矩形
即,如何计算4个端点的纬度和经度
我可以在这里使用这个方法吗?一个选项是使用v3端口版本的 工作代码段:
var-map=null;
函数初始化(){
变量myOptions={
缩放:8,
中心:新google.maps.LatLng(44,-78),
mapTypeControl:true,
mapTypeControlOptions:{
样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单
},
导航控制:对,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map”),
肌肽);
//==-倾斜矩形===
var point=new google.maps.LatLng(44,-78);
var tiltedRectangle1=google.maps.Polygon.Shape(点,50000,10000,50000,10000,-60,4,“#000000”,3,1,“#ffffff”,1,{},true);
var tiltedRectangle2=google.maps.Polyline.Shape(点,50000,10000,50000,10000,30,4,#000000,3,1,{},true);
倾斜角度1.设置地图(地图);
倾斜角度2.设置地图(地图);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
//EShapes.js
//
//基于“thetoy”的一个想法和几行代码
//
//此Javascript由Mike Williams提供
//社区教会Javascript团队
// http://www.bisphamchurch.org.uk/
// http://econym.org.uk/gmap/
//
//本作品根据知识共享许可证获得许可
// http://creativecommons.org/licenses/by/2.0/uk/
//
//版本0.0 04/Apr/2008尚未完成
//版本1.0 2008年4月10日首次发布
//Lawrence Ross于2011年10月12日将版本3.0移植到v3
google.maps.Polyline.Shape=函数(点、r1、r2、r3、r4、旋转、顶点计数、颜色、权重、不透明度、选项、倾斜){
如果(!颜色){
color=“#0000FF”;
}
如果(!重量){
重量=4;
}
如果(!不透明度){
不透明度=0.45;
}
var rot=-rotation*Math.PI/180;
var点=[];
var latConv=google.maps.geometry.sphereal.ComputedIstanceBeween(point,新的google.maps.LatLng(point.lat()+0.1,point.lng())*10;
var lngConv=google.maps.geometry.sphereal.ComputedDistanceBeween(point,new google.maps.LatLng(point.lat(),point.lng()+0.1))*10;
var阶跃=(360/顶点计数)| 10;
var-flop=-1;
如果(倾斜){
var I1=180/垂直计数;
}否则{
var I1=0;
}
对于(var i=I1;i一个选项是使用v3端口版本的
工作代码段:
var-map=null;
函数初始化(){
变量myOptions={
缩放:8,
中心:新google.maps.LatLng(44,-78),
mapTypeControl:true,
mapTypeControlOptions:{
样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单
},
导航控制:对,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map”),
肌肽);
//==-倾斜矩形===
var point=new google.maps.LatLng(44,-78);
var tiltedRectangle1=google.maps.Polygon.Shape(点,50000,10000,50000,10000,-60,4,“#000000”,3,1,“#ffffff”,1,{},true);
var tiltedRectangle2=google.maps.Polyline.Shape(点,50000,10000,50000,10000,30,4,#000000,3,1,{},true);
倾斜角度1.设置地图(地图);
倾斜角度2.设置地图(地图);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
//EShapes.js
//
//基于“thetoy”的一个想法和几行代码
//
//此Javascript由Mike Williams提供
//社区教会Javascript团队
// http://www.bisphamchurch.org.uk/
// http://econym.org.uk/gmap/
//
//本作品根据知识共享许可证获得许可
// http://creativecommons.org/licenses/by/2.0/uk/
//
//版本0.0 04/Apr/2008尚未完成
//版本1.0 2008年4月10日首次发布
//Lawrence Ross于2011年10月12日将版本3.0移植到v3
google.maps.Polyline.Shape=函数(点、r1、r2、r3、r4、旋转、顶点计数、颜色、权重、不透明度、选项、倾斜){
如果(!颜色){
color=“#0000FF”;
}
如果(!重量){
重量=4;
}
如果(!不透明度){
不透明度=0.45;
}
var rot=-rotation*Math.PI/180;
var点=[];
var latConv=google.maps.geometry.sphereal.ComputedIstanceBeween(point,新的google.maps.LatLng(point.lat()+0.1,point.lng())*10;
var lngConv=google.maps.geometry.sphereal.ComputedDistanceBeween(point,new google.maps.LatLng(point.lat(),point.lng()+0.1))*10;
var阶跃=(360/顶点计数)| 10;
var-flop=-1;
如果(倾斜){
var I1=180/垂直计数;
}否则{
var I1=0;
}
对于(var i=I1;i我自己的答案(参见下面的屏幕截图)-首先添加几何体
库:
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?v=3&libraries=geometry">
</script>
要将矩形旋转角度
我可能可以将其添加到computeOffset()
调用的第二个参数中。还没有尝试过。我自己的答案(请参见下面的屏幕截图)-首先添加几何体
库:
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?v=3&libraries=geometry">
</script>
若要将矩形旋转角度
,我可能可以将其添加到
var NORTH = 0;
var WEST = -90;
var SOUTH = 180;
var EAST = 90;
function drawRect(map, lat, lng, width, height, color) {
var center = new google.maps.LatLng(lat, lng);
var north = google.maps.geometry.spherical.computeOffset(center, height / 2, NORTH);
var south = google.maps.geometry.spherical.computeOffset(center, height / 2, SOUTH);
var northEast = google.maps.geometry.spherical.computeOffset(north, width / 2, EAST);
var northWest = google.maps.geometry.spherical.computeOffset(north, width / 2, WEST);
var southEast = google.maps.geometry.spherical.computeOffset(south, width / 2, EAST);
var southWest = google.maps.geometry.spherical.computeOffset(south, width / 2, WEST);
var corners = [ northEast, northWest, southWest, southEast ];
var rect = new google.maps.Polygon({
paths: corners,
strokeColor: color,
strokeOpacity: 0.9,
strokeWeight: 1,
fillColor: color,
fillOpacity: 0.3,
map: map
});
}