2014-06-13 45 views
0

我有两个javascript函数。 1)InitializeGoogleMap和2)GetPlaces调用Javascript函数Google Maps

当页面加载时第一个加载地图,第二个函数根据按钮事件点击时使用eval暴露的db的值加载标记。

两个功能正常工作的问题是,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> 
+0

为什么函数在单独的'

0

声明一个全局变量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); 
    } 
} 
-2

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

<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> 
+0

这不起作用。 'GoogleMapsOptions'在init函数中声明。 –

+0

对不起。我编辑了我的代码! –

+0

仍然无法正常工作。 –

相关问题