Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 如何在google maps api v3中创建网格_Javascript_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Javascript 如何在google maps api v3中创建网格

Javascript 如何在google maps api v3中创建网格,javascript,google-maps-api-3,google-maps-markers,Javascript,Google Maps Api 3,Google Maps Markers,这方面我是新手。我想做的是,创建2个标记(它们是可拖动的),它们之间会有网格,如。当我改变一个标记时,网格应该改变。我正在尝试用多段线绘制。顺便说一下,我不能用marker1.getPosition().lat()获得纬度或经度。谢谢你的帮助 我所有的代码: <!DOCTYPE html> <html> <head> <title>Simple Map</title>

这方面我是新手。我想做的是,创建2个标记(它们是可拖动的),它们之间会有网格,如。当我改变一个标记时,网格应该改变。我正在尝试用多段线绘制。顺便说一下,我不能用
marker1.getPosition().lat()
获得纬度或经度。谢谢你的帮助

我所有的代码:

        <!DOCTYPE html>
    <html>
      <head>
        <title>Simple Map</title>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <style>
          html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px
          }
        </style>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
        <script>
            var map;
            var marker1;
            var marker2;


            function initialize() {
                var mapOptions = {
                    zoom: 10,
                    center: new google.maps.LatLng(50.3, 44.3)
                };
                map = new google.maps.Map(document.getElementById('map-canvas'),
          mapOptions);

                marker1 = new google.maps.Marker({
                    position: new google.maps.LatLng(50.1, 44.1),
                    map: map,
                    draggable: true,
                    title: 'marker1 '

                });
                marker2 = new google.maps.Marker({
                    position: new google.maps.LatLng(50.5, 44.5),
                    map: map,
                    draggable: true,
                    title: 'marker2'
                });


                var flightPlanCoordinates = [
                    marker1.getPosition(),
                    marker2.getPosition(),
                 ];

                // code below is not working
                /* 
                google.maps.event.addListener(marker1, 'dragend', function () {

                polyline.LatLngBounds(new google.maps.LatLng(marker1.getPosition(), marker2.getPosition()));
                });

                google.maps.event.addListener(marker2, 'dragend', function () {

                polyline.LatLngBounds(new google.maps.LatLng(marker1.getPosition(), marker2.getPosition()));

                */
                var polyline = new google.maps.Polyline(
                { path: flightPlanCoordinates,
                    geodesic: true,
                    strokeColor: '#FF0000',
                    strokeOpacity: 1.0,
                    strokeWeight: 2
                });

                var lat1 = marker1.getPosition().lat();
                var lng1 = marker1.getPosition().lng();
                var lat2 = marker2.getPosition().lat();
                var lng2 = marker2.getPosition().lng();

                // I tried to get distance between 2 markers but it did not work either
                /*   function distance(
                lat1, 
                lng1, 
                lat2, 
                lng2
                ) {
                var R = 6371;
                var a =
                0.5 - Math.cos((lat2 - lat1) * Math.PI / 180) / 2 +
                Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
                (1 - Math.cos((lon2 - lon1) * Math.PI / 180)) / 2;

                return R * 2 * Math.asin(Math.sqrt(a));
                }
                */


                polyline.setMap(map);

            }

            google.maps.event.addDomListener(window, 'load', initialize);

        </script>
      </head>
      <body>
        <div id="map-canvas"></div>
      </body>
    </html>

简单地图
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
var映射;
var-marker1;
var-marker2;
函数初始化(){
变量映射选项={
缩放:10,
中心:新google.maps.LatLng(50.3,44.3)
};
map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
marker1=新的google.maps.Marker({
位置:新google.maps.LatLng(50.1,44.1),
地图:地图,
真的,
标题:“marker1”
});
marker2=新的google.maps.Marker({
位置:新google.maps.LatLng(50.5,44.5),
地图:地图,
真的,
标题:“marker2”
});
var FlightPlan坐标=[
marker1.getPosition(),
marker2.getPosition(),
];
//下面的代码不起作用
/* 
google.maps.event.addListener(marker1,'dragend',function(){
polyline.LatLngBounds(新的google.maps.LatLng(marker1.getPosition(),marker2.getPosition());
});
google.maps.event.addListener(marker2,'dragend',function(){
polyline.LatLngBounds(新的google.maps.LatLng(marker1.getPosition(),marker2.getPosition());
*/
var polyline=新的google.maps.polyline(
{路径:飞行平面坐标,
测地线:正确,
strokeColor:“#FF0000”,
笔划不透明度:1.0,
冲程重量:2
});
var lat1=marker1.getPosition().lat();
var lng1=marker1.getPosition().lng();
var lat2=marker2.getPosition().lat();
var lng2=marker2.getPosition().lng();
//我试图获得两个标记之间的距离,但也不起作用
/*函数距离(
lat1,
lng1,
lat2,
lng2
) {
var R=6371;
变量a=
0.5-Math.cos((lat2-lat1)*Math.PI/180)/2+
Math.cos(lat1*Math.PI/180)*Math.cos(lat2*Math.PI/180)*
(1-Math.cos((lon2-lon1)*Math.PI/180))/2;
返回R*2*Math.asin(Math.sqrt(a));
}
*/
多段线.setMap(map);
}
google.maps.event.addDomListener(窗口“加载”,初始化);

要在拖动标记后获取标记的坐标,请更改:

  google.maps.event.addListener(marker1, 'dragend', function() {
      polyline.LatLngBounds(new google.maps.LatLng(marker1.getPosition(), marker2.getPosition()));
  });
致:

然而,在多段线对象上没有
LatLngBounds
函数。

就我所做的:
As far as i done:

    <!DOCTYPE html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
      #panel {
        position: absolute;
        top: 5px;
        left: 50%;
        margin-left: -180px;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?          
    sensor=false&v=3&libraries=geometry"></script>
    <script>
        var map;
        var marker1;
        var marker2;
        var rectangle;

        function initialize() {
            var mapOptions = {
                zoom: 11,
                center: new google.maps.LatLng(38.4, 26.7)
            };
            map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

            marker1 = new google.maps.Marker({
                position: new google.maps.LatLng(38.3, 26.6),
                map: map,
                draggable: true,
                title: 'marker1'
            });
            marker2 = new google.maps.Marker({
                position: new google.maps.LatLng(38.5, 26.8),
                map: map,
                draggable: true,

                title: 'marker2'
            });

            rectangle = new google.maps.Rectangle({
                strokeColor: '#FF0000',
                strokeOpacity: 0.8,
                strokeWeight: 2,
                fillColor: '#FF0000',
                fillOpacity: 0.35,
                map: map,
                bounds: new google.maps.LatLngBounds(
                        marker1.getPosition(),
                        marker2.getPosition())
            });

            var leftSideDist = Math.round((marker2.getPosition().lng() - marker1.getPosition().lng()) * 10000) / 100;
            var belowSideDist = Math.round((marker2.getPosition().lat() - marker1.getPosition().lat()) * 10000) / 100;

            google.maps.event.addListener(marker1, 'dragend', function () {

                rectangle.setBounds(new google.maps.LatLngBounds(marker1.getPosition(), marker2.getPosition()));
                leftSideDist = Math.round((marker2.getPosition().lng() - marker1.getPosition().lng()) * 10000) / 100;
            });

            google.maps.event.addListener(marker2, 'dragend', function () {

                rectangle.setBounds(new google.maps.LatLngBounds(marker1.getPosition(), marker2.getPosition()));
                belowSideDist = Math.round((marker2.getPosition().lat() - marker1.getPosition().lat()) * 10000) / 100;
            });



            var leftSideDist = Math.round((marker2.getPosition().lng() - marker1.getPosition().lng()) * 10000) / 100;
            var belowSideDist = Math.round((marker2.getPosition().lat() - marker1.getPosition().lat()) * 10000) / 100;

            var dividerLat = 5;
            var dividerLng = 5; //ilerde kullanıcıdan alınacak
            var excLat = leftSideDist / dividerLat;
            var excLng = belowSideDist / dividerLng;

            var rectangleLat[];
            var rectangleLng[];

            var m1Lat = marker1.getPosition().lat();
            var m1Lng = marker1.getPosition().lng();
            var m2Lat = marker2.getPosition().lat();
            var m2Lng = marker2.getPosition().lng();

            for (var i = 0; i < dividerLat; i++) {

                for (var j = 0; j < dividerLng; j++) {



                    rectangleLng[i*5+j] = new google.maps.Rectangle({
                        strokeColor: '#FF0000',
                        strokeOpacity: 0.8,
                        strokeWeight: 2,
                        fillColor: '#FF0000',
                        fillOpacity: 0.35,
                        map: map,
                        bounds: new google.maps.LatLngBounds(
                        ( m1Lat , (excLng*(j+1) ) ),
                        ( m1Lat+excLat, m2Lng+(excLng*(j+1) ) ) )

                    });



                }//for j Lng

             }//for i Lat


            document.getElementById('left').value = leftSideDist;
            document.getElementById('blw').value = belowSideDist;
        }

        google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <div id="panel" style="margin-left:-320px">
      leftSideDist: <input type="text" readonly id="left">
      belowSideDist: <input type="text" readonly id="blw">
    </div>
  </body>
</html>
简单地图 html,正文,#地图画布{ 身高:100%; 边际:0px; 填充:0px } #面板{ 位置:绝对位置; 顶部:5px; 左:50%; 左边距:-180px; z指数:5; 背景色:#fff; 填充物:5px; 边框:1px实心#999; } var映射; var-marker1; var-marker2; var矩形; 函数初始化(){ 变量映射选项={ 缩放:11, 中心:新google.maps.LatLng(38.4,26.7) }; map=new google.maps.map(document.getElementById('map-canvas'), 地图选项); marker1=新的google.maps.Marker({ 位置:新google.maps.LatLng(38.3,26.6), 地图:地图, 真的, 标题:“marker1” }); marker2=新的google.maps.Marker({ 位置:新google.maps.LatLng(38.5,26.8), 地图:地图, 真的, 标题:“marker2” }); 矩形=新的google.maps.rectangle({ strokeColor:“#FF0000”, 笔划不透明度:0.8, 冲程重量:2, 填充颜色:'#FF0000', 不透明度:0.35, 地图:地图, 边界:新的google.maps.LatLngBounds( marker1.getPosition(), marker2.getPosition()) }); var leftSideDist=Math.round((marker2.getPosition().lng()-marker1.getPosition().lng())*10000)/100; var belowSideDist=Math.round((marker2.getPosition().lat()-marker1.getPosition().lat())*10000)/100; google.maps.event.addListener(marker1,'dragend',function(){ rectangle.setBounds(新的google.maps.LatLngBounds(marker1.getPosition(),marker2.getPosition()); leftSideDist=Math.round((marker2.getPosition().lng()-marker1.getPosition().lng())*10000)/100; }); google.maps.event.addListener(marker2,'dragend',function(){ rectangle.setBounds(新的google.maps.LatLngBounds(marker1.getPosition(),marker2.getPosition()); belowSideDist=数学圆((marker2.getPosition
As far as i done:

    <!DOCTYPE html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
      #panel {
        position: absolute;
        top: 5px;
        left: 50%;
        margin-left: -180px;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?          
    sensor=false&v=3&libraries=geometry"></script>
    <script>
        var map;
        var marker1;
        var marker2;
        var rectangle;

        function initialize() {
            var mapOptions = {
                zoom: 11,
                center: new google.maps.LatLng(38.4, 26.7)
            };
            map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

            marker1 = new google.maps.Marker({
                position: new google.maps.LatLng(38.3, 26.6),
                map: map,
                draggable: true,
                title: 'marker1'
            });
            marker2 = new google.maps.Marker({
                position: new google.maps.LatLng(38.5, 26.8),
                map: map,
                draggable: true,

                title: 'marker2'
            });

            rectangle = new google.maps.Rectangle({
                strokeColor: '#FF0000',
                strokeOpacity: 0.8,
                strokeWeight: 2,
                fillColor: '#FF0000',
                fillOpacity: 0.35,
                map: map,
                bounds: new google.maps.LatLngBounds(
                        marker1.getPosition(),
                        marker2.getPosition())
            });

            var leftSideDist = Math.round((marker2.getPosition().lng() - marker1.getPosition().lng()) * 10000) / 100;
            var belowSideDist = Math.round((marker2.getPosition().lat() - marker1.getPosition().lat()) * 10000) / 100;

            google.maps.event.addListener(marker1, 'dragend', function () {

                rectangle.setBounds(new google.maps.LatLngBounds(marker1.getPosition(), marker2.getPosition()));
                leftSideDist = Math.round((marker2.getPosition().lng() - marker1.getPosition().lng()) * 10000) / 100;
            });

            google.maps.event.addListener(marker2, 'dragend', function () {

                rectangle.setBounds(new google.maps.LatLngBounds(marker1.getPosition(), marker2.getPosition()));
                belowSideDist = Math.round((marker2.getPosition().lat() - marker1.getPosition().lat()) * 10000) / 100;
            });



            var leftSideDist = Math.round((marker2.getPosition().lng() - marker1.getPosition().lng()) * 10000) / 100;
            var belowSideDist = Math.round((marker2.getPosition().lat() - marker1.getPosition().lat()) * 10000) / 100;

            var dividerLat = 5;
            var dividerLng = 5; //ilerde kullanıcıdan alınacak
            var excLat = leftSideDist / dividerLat;
            var excLng = belowSideDist / dividerLng;

            var rectangleLat[];
            var rectangleLng[];

            var m1Lat = marker1.getPosition().lat();
            var m1Lng = marker1.getPosition().lng();
            var m2Lat = marker2.getPosition().lat();
            var m2Lng = marker2.getPosition().lng();

            for (var i = 0; i < dividerLat; i++) {

                for (var j = 0; j < dividerLng; j++) {



                    rectangleLng[i*5+j] = new google.maps.Rectangle({
                        strokeColor: '#FF0000',
                        strokeOpacity: 0.8,
                        strokeWeight: 2,
                        fillColor: '#FF0000',
                        fillOpacity: 0.35,
                        map: map,
                        bounds: new google.maps.LatLngBounds(
                        ( m1Lat , (excLng*(j+1) ) ),
                        ( m1Lat+excLat, m2Lng+(excLng*(j+1) ) ) )

                    });



                }//for j Lng

             }//for i Lat


            document.getElementById('left').value = leftSideDist;
            document.getElementById('blw').value = belowSideDist;
        }

        google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <div id="panel" style="margin-left:-320px">
      leftSideDist: <input type="text" readonly id="left">
      belowSideDist: <input type="text" readonly id="blw">
    </div>
  </body>
</html>