调用Javascript函数谷歌地图

call Javascript function Google Maps

本文关键字:谷歌地图 函数 Javascript 调用      更新时间:2023-09-26

我有两个javascript函数。1) InitializeGoogleMap和2)GetPlaces

第一个函数在页面加载时加载地图,第二个函数根据在按钮事件单击时使用eval公开的数据库中的值加载标记。

两个函数都工作,问题是GetPlaces函数再次加载地图加载标记,而不是我想要GetPlaces函数使用由InitializeGoogleMap

创建的相同地图

脚本:

      <script language="javascript" type="text/javascript"> 
      function InitializeGoogleMap() {
          try {
              DirectionsDisplay = new google.maps.DirectionsRenderer();
              var LatitudeLongitude = new google.maps.LatLng(19.1969813, 72.9962491);
              var GoogleMapOptions =
                {
                    zoom: 10,
                    center: LatitudeLongitude,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
              var map = new google.maps.Map($("#me")[0], GoogleMapOptions);
              DirectionsDisplay.setMap(map);
              DirectionsDisplay.setPanel($("#DivDirectionRouteStatus")[0]);

          }
          catch (E) {
              alert(E.message);
          }

      }


function GetPlaces() {
        try{

            var markers = 
                [<asp:Repeater ID="rptMarkers" runat="server">
                            <ItemTemplate>
                                        {
                                            "title": '<%# Eval("Name") %>',
                                            "lat": '<%# Eval("Latitude") %>',
                                            "lng": '<%# Eval("Longatude") %>',
                                            "description": '<%# Eval("Description") %>'
                                        }
                            </ItemTemplate>
                            <SeparatorTemplate>
                                ,
                            </SeparatorTemplate>
                            </asp:Repeater>
            ];
            DirectionsDisplay = new google.maps.DirectionsRenderer();

            var mapOptions = {
                center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
                zoom: 8,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
             var map = new google.maps.Map($("#me")[0], mapOptions);
            for (i = 0; i < markers.length; i++) {
                var data = markers[i]
                var myLatlng = new google.maps.LatLng(data.lat, data.lng);
                var marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: data.title
                });
                (function (marker, data) {
                    google.maps.event.addListener(marker, "click", function (e) {
                        infoWindow.setContent(data.description);
                        infoWindow.open(map, marker);
                    });
                })(marker, data);
            }

        }
        catch (E)
        {
            alert(E.message);
        }
        }
    </script>

您需要使您的map变量全局。不要在GetPlaces()方法中重新声明它。例如…

var map;
function InitializeGoogleMap() {
      ...
      map = new google.maps.Map($("#me")[0], GoogleMapOptions);
      ...
}
function GetPlaces() {
    ...
        var markers = 
            [<asp:Repeater ID="rptMarkers" runat="server">
                        <ItemTemplate>
                                    {
                                        "title": '<%# Eval("Name") %>',
                                        "lat": '<%# Eval("Latitude") %>',
                                        "lng": '<%# Eval("Longatude") %>',
                                        "description": '<%# Eval("Description") %>'
                                    }
                        </ItemTemplate>
                        <SeparatorTemplate>
                            ,
                        </SeparatorTemplate>
                        </asp:Repeater>
        ];
        DirectionsDisplay = new google.maps.DirectionsRenderer();
        for (i = 0; i < markers.length; i++) {
            var data = markers[i]
            var myLatlng = new google.maps.LatLng(data.lat, data.lng);
            var marker = new google.maps.Marker({
                position: myLatlng,
                map: map,
                title: data.title
            });
            (function (marker, data) {
                google.maps.event.addListener(marker, "click", function (e) {
                    infoWindow.setContent(data.description);
                    infoWindow.open(map, marker);
                });
            })(marker, data);
    ...
}

在函数外声明全局变量map,并从函数中删除var关键字

var map; // global
function InitializeGoogleMap() {
try {
          DirectionsDisplay = new google.maps.DirectionsRenderer();
          var LatitudeLongitude = new google.maps.LatLng(19.1969813, 72.9962491);
          var GoogleMapOptions =
            {
                zoom: 10,
                center: LatitudeLongitude,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
          map = new google.maps.Map($("#me")[0], GoogleMapOptions); 
          DirectionsDisplay.setMap(map);
          DirectionsDisplay.setPanel($("#DivDirectionRouteStatus")[0]);
      }
      catch (E) {
          alert(E.message);
      }
  }
function GetPlaces() {
    try{
        var markers = 
            [<asp:Repeater ID="rptMarkers" runat="server">
                        <ItemTemplate>
                                    {
                                        "title": '<%# Eval("Name") %>',
                                        "lat": '<%# Eval("Latitude") %>',
                                        "lng": '<%# Eval("Longatude") %>',
                                        "description": '<%# Eval("Description") %>'
                                    }
                        </ItemTemplate>
                        <SeparatorTemplate>
                            ,
                        </SeparatorTemplate>
                        </asp:Repeater>
        ];
        DirectionsDisplay = new google.maps.DirectionsRenderer();
        var mapOptions = {
            center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
            zoom: 8,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        for (i = 0; i < markers.length; i++) {
            var data = markers[i]
            var myLatlng = new google.maps.LatLng(data.lat, data.lng);
            var marker = new google.maps.Marker({
                position: myLatlng,
                map: map,
                title: data.title
            });
            (function (marker, data) {
                google.maps.event.addListener(marker, "click", function (e) {
                    infoWindow.setContent(data.description);
                    infoWindow.open(map, marker);
                });
            })(marker, data);
        }
    }
    catch (E)
    {
        alert(E.message);
    }
}

我已经编辑了你的代码。试试这个:

<script language="javascript" type="text/javascript"> 
var GoogleMapOptions =
                {
                    zoom: 10,
                    center: LatitudeLongitude,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
var map = new google.maps.Map($("#me")[0], GoogleMapOptions);
      function InitializeGoogleMap() {
          try {
              DirectionsDisplay = new google.maps.DirectionsRenderer();
              var LatitudeLongitude = new google.maps.LatLng(19.1969813, 72.9962491);
              /*var GoogleMapOptions =
                {
                    zoom: 10,
                    center: LatitudeLongitude,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };*/
                //commented below
              //var map = new google.maps.Map($("#me")[0], GoogleMapOptions);
              DirectionsDisplay.setMap(map);
              DirectionsDisplay.setPanel($("#DivDirectionRouteStatus")[0]);

          }
          catch (E) {
              alert(E.message);
          }

      }


function GetPlaces() {
        try{

            var markers = 
                [<asp:Repeater ID="rptMarkers" runat="server">
                            <ItemTemplate>
                                        {
                                            "title": '<%# Eval("Name") %>',
                                            "lat": '<%# Eval("Latitude") %>',
                                            "lng": '<%# Eval("Longatude") %>',
                                            "description": '<%# Eval("Description") %>'
                                        }
                            </ItemTemplate>
                            <SeparatorTemplate>
                                ,
                            </SeparatorTemplate>
                            </asp:Repeater>
            ];
            DirectionsDisplay = new google.maps.DirectionsRenderer();

            var mapOptions = {
                center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
                zoom: 8,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            //commented below line
            // var map = new google.maps.Map($("#me")[0], mapOptions);
            for (i = 0; i < markers.length; i++) {
                var data = markers[i]
                var myLatlng = new google.maps.LatLng(data.lat, data.lng);
                var marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: data.title
                });
                (function (marker, data) {
                    google.maps.event.addListener(marker, "click", function (e) {
                        infoWindow.setContent(data.description);
                        infoWindow.open(map, marker);
                    });
                })(marker, data);
            }

        }
        catch (E)
        {
            alert(E.message);
        }
        }
    </script>