-1

저는 몇 년 전에 Google map api에서 일했고 약간 재사용 가능한 유틸리티를 작성했습니다. 그 당시 Google지도 API 참조를 추가하면 페이지의 전역 네임 스페이스에있는 모든 API 클래스가 추가됩니다. 이자바 스크립트에 네임 스페이스를 추가하십시오.

<script src="http://maps.google.com/maps?SOMEPARAMETERS"> 
<script> 
var map= new GMap2(document.getElementById("map_canvas")); 
var point= new LatLng(31,75); 
var line= new Polyline(OPTIONS); 
</script> 

v3에서 샘플을 작업이기 때문에, 모든 Google지도 자바 스크립트 API 코드는에서는 google.maps에 저장됩니다. * 대신 글로벌 네임 스페이스의 공간. 대부분의 객체는이 프로세스의 일부로 이름이 바뀌었고 더 많은 변경이 이루어졌습니다.

<script src="APIURL"> 
<script> 
var map= new google.map.Map(document.getElementById("map_canvas")); 
var point= new google.mapLatLng(31,75); 
var line= new google.map.Polyline(OPTIONS); 
</script> 

ISSUE

내가 구글 V2의 API의 시간을 거슬러 라이브러리를 작성하고 프로젝트의 수에 사용되는 큰 일하는 다음과 같이

이제 위의 코드를 작성해야합니다. 하지만 이제는 새로운 프로젝트를 진행하고 Google V3 API를 사용하여 오래된 v2 라이브러리를 다시 사용하려고합니다. 하지만 v3 라이브러리를 추가해도 전역 네임 스페이스에 API 클래스가 추가되지 않으며 라이브러리가 작동하지 않습니다. 우리는 우리가 정상에 C#에서했던 것처럼 파일을 우리의 자바 스크립트에 네임 스페이스를 추가 할 수있는 방법이 있습니까 그리고 당신은 단지 참조를 사용할 수 있습니다 네임 스페이스

+0

지도 API의 세 번째 버전은 새 메소드 이름을 사용하여 다른 메소드를 사용하므로 자바 스크립트를 네임 스페이스로 매핑 할 수 있더라도 (할 수는 없지만) 새로운 API와 일치시키기 위해 모든 이름, 매개 변수 등을 변경해야하므로 라이브러리를 다시 작성하는 것이 좋습니다. – adeneo

답변

1

를 추가하지 않고 클래스를 작성할 수있게 해준다 :

(function() { // A scoping function to avoid creating glboals 
    var GMap2 = google.map.Map; 
    var LatLng = google.map.LatLng; 
    var Polyline = googlemap.Polyline; 


    // ...your code using the above here... 
})(); 

그러나 이것은 인수가 변경되지 않았다고 가정합니다.

또는, 당신은 외관 패턴을 사용할 수 있습니다. (그리고 다른 사람에 대한 유사)

function GMap2(/*...relevant args...*/) 

    return new google.map.Map(/*...relevant args here, possibly modified...*/); 
} 

을 (즉, 작동 new 식의 결과가 될 것입니다 때문에 당신이 GMap2new를 사용하는 경우에도

관련 문제