Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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地图和表单输入之间的交互_Javascript_Jquery_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Javascript Google地图和表单输入之间的交互

Javascript Google地图和表单输入之间的交互,javascript,jquery,google-maps-api-3,google-maps-markers,Javascript,Jquery,Google Maps Api 3,Google Maps Markers,我有这样一个HTML页面: <button onclick="initMap()">Regenerate</button><BR> Latitude<input style="width: 5em;" id="lat" name="lat" type="number" value="35.9000" step="0.1"/></div><BR> Longitude<input style="widt

我有这样一个HTML页面:

 <button onclick="initMap()">Regenerate</button><BR>

    Latitude<input style="width: 5em;" id="lat" name="lat" type="number" value="35.9000" step="0.1"/></div><BR>
    Longitude<input style="width: 5em;" id="long" name="long" type="number" value="15.7500" step="0.1"/></div>


    <div id="map"></div>

        <script>

            var map;

            function initMap() {

                var latitude = parseFloat ($('#lat').val());
                var longitude = parseFloat ($('#long').val());

                var mapOptions = {

                    zoom: 13,
                    center: new google.maps.LatLng(latitude, longitude),
                    mapTypeId: google.maps.MapTypeId.TERRAIN

                };

                map = new google.maps.Map(document.getElementById('map'), mapOptions);


            }

        $( "#lat" ).change(function() {
            placeMarkers();
        });

        $( "#long" ).change(function() {
            placeMarkers();
        }); 

function placeMarkers() {

        var latitude = parseFloat ($('#lat').val());
        var longitude = parseFloat ($('#long').val());

        var markerDep = new google.maps.Marker({
          position: {lat: latitude, lng: longitude},
          map: map,
          label: "D",
          draggable: true,
          title: 'Departure'
        });

        var markerArr = new google.maps.Marker({
          position: {lat: latitude+0.01, lng: longitude+0.01},
          map: map,
          label: "A",
          draggable: true,
          title: 'Arrival'
        });

    }

        </script>
重新生成
纬度
经度 var映射; 函数initMap(){ var latitude=parseFloat($('#lat').val()); var longitude=parseFloat($('#long').val(); 变量映射选项={ 缩放:13, 中心:新google.maps.LatLng(纬度、经度), mapTypeId:google.maps.mapTypeId.TERRAIN }; map=new google.maps.map(document.getElementById('map'),mapOptions); } $(“#lat”).change(函数(){ 地点标记(); }); $(“#long”).change(函数(){ 地点标记(); }); 函数placeMarkers(){ var latitude=parseFloat($('#lat').val()); var longitude=parseFloat($('#long').val(); var markerDep=新的google.maps.Marker({ 位置:{纬度,经度}, 地图:地图, 标签:“D”, 真的, 标题:“出发” }); var markerArr=new google.maps.Marker({ 位置:{lat:纬度+0.01,lng:经度+0.01}, 地图:地图, 标签:“A”, 真的, 标题:“抵达” }); }
我想与表单和地图中用户给定的值进行交互

编辑:部分解决,请参见上面的代码


每次用户单击/更改值时刷新地图有点“沉重”。因此,我不想每次更改输入时都调用initMap(),而是只替换标记?但是placeMarkers()无法做到这一点……除了第一次(加载时)。其他时候,他们会创建新的标记…

我有一个可接受的解决方案,对于那些感兴趣的人,这里是:

Departure :
Latitude<input style="width: 5em;" id="latD" name="latD" type="number" value="37" step="0.01"/></div><BR>
Longitude<input style="width: 5em;" id="longD" name="longD" type="number" value="11" step="0.01"/></div>
<BR>
Arrival: <BR>
Latitude<input style="width: 5em;" id="latA" name="latA" type="number" value="38" step="0.01"/></div><BR>
Longitude<input style="width: 5em;" id="longA" name="longA" type="number" value="12" step="0.01"/></div>

<div id="map"></div>

<script>

    var map;
    var markerArr;
    var markerDep;

    //init function
    function initMap() {

        //used for the definition of the map's center
        var latitude = parseFloat ($('#latD').val());
        var longitude = parseFloat ($('#longD').val());

        var mapOptions = {

            zoom: 13,
            center: new google.maps.LatLng(latitude, longitude),
            mapTypeId: google.maps.MapTypeId.TERRAIN

        };

        map = new google.maps.Map(document.getElementById('map'), mapOptions);

        //creates the Departure and Arrival markers
        placeDepMarker();
        placeArrMarker();

    }

    //creates Departure
    function placeDepMarker() {

        var latitude = parseFloat ($('#latD').val());
        var longitude = parseFloat ($('#longD').val());

        markerDep = new google.maps.Marker({
            position: {lat: latitude, lng: longitude},
            map: map,
            label: "D",
            draggable: true,
            title: 'Departure'
        });

    }

    //creates Arrival
    function placeArrMarker() {

        var latitude = parseFloat ($('#latA').val());
        var longitude = parseFloat ($('#longA').val());

        markerArr = new google.maps.Marker({
            position: {lat: latitude+0.01, lng: longitude+0.01},
            map: map,
            label: "A",
            draggable: true,
            title: 'Arrival'
            });                 
    }

    //Erases Arrival marker
    function clearArrMarker() {
        markerArr.setMap(null);
    }

    //erases Departure marker
    function clearDepMarker() {
        markerDep.setMap(null);
    }

    $( "#latD, #longD").change(function() {
        clearDepMarker();
        placeDepMarker();
    });

    $( "#latA, #longA").change(function() {
        clearArrMarker();
        placeArrMarker();
    });



</script>

现在我需要考虑拖放以刷新表单

第一个问题是纬度和经度变量没有在initMap函数中设置。oops是的,它们以前设置过,但我当时移动了它们!我的错误:(更新)
//erases the given marker
    function clearMarker(marker) {
        marker.setMap(null);
    }