2013-02-04 7 views
0

Je suis un peu un joker quand il s'agit de javascript, mais je voulais placer une carte Google de mon emplacement sur mon site web, et avoir un formulaire simple où les visiteurs peuvent entrer leur adresse et les directions seraient montrées. Je l'ai bien fonctionné, mais il a été mentionné qu'il y a trop de variables globales créées par le script. Les globals sont les suivantes:API Google Maps v3, Variables Globales

calcRoute, directionsDisplay, directionsService, google, initialize, map

Si je tente de faire l'une de ces GLOBALS au lieu local, il casse le script, et la carte n'affiche pas. Voici les js que j'ai écrit:

var initialize = function strict() { 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    mapCenter = new google.maps.LatLng(53.503716, -1.12975); 
    mapOptions = { 
     zoom: 14, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
    center: mapCenter 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
    directionsDisplay.setMap(map); 
    directionsDisplay.setPanel(document.getElementById("directionsPanel")); 
    locationPin = "images/location_pin.png"; 
    newMarker = new google.maps.Marker({ position: mapCenter,map: map,icon: locationPin}); 
    }; 

var calcRoute = function strict() { 
    routeStart = document.getElementById("start").value; 
    calculatedRoute = {origin: routeStart, destination: mapCenter, travelMode: google.maps.TravelMode.DRIVING}; 
    directionsService.route(calculatedRoute, function (routeStart, mapCenter) { 
    directionsDisplay.setDirections(routeStart); 
    calculatedRoute = routeStart.routes[0].legs[0]; 
    }); 
}; 
var directionsDisplay; 
var directionsService = new google.maps.DirectionsService(); 
var map; 

Pour autant que je peux voir, globals je l'ai mentionné sont requis par l'API Google Maps et ils doivent être globals. Tout conseil à ce sujet serait très apprécié.

+0

Montrez-nous exactement l'erreur: D –

+0

Il n'y a pas une erreur, le script fait ce qu'il est censé faire. J'ai montré ce code à une autre communauté et ils ont dit qu'il y avait trop de variables globales. J'ai couru le code par JSLint, et il a montré les variables que j'ai énumérées. Ce que je demande, c'est si c'est un problème, et si le code peut être mieux écrit? –

+1

de la question je ne sais vraiment pas ce dont vous avez besoin. Pouvez-vous l'expliquer plus? – daremachine

Répondre

0

Votre code est OK!

Mais, si vous ne voulez pas que cette variable soit globale, insérez le code à une fonction, comme:

(function() { 
    //your code 
}()); 

Avec cela, les variables seront à portée, mais dans votre cas, il ne fait pas de différence ...

+1

Merci beaucoup. Je suis toujours en train de m'occuper de Javascript, alors quand quelques personnes ont dit que le code était mauvais parce qu'il générait trop de variables globales, j'étais inquiet. –