2017-10-02 3 views
0

나는 자바 스크립트 멍청한 놈이다. 그러나 나는 자바에 가장 익숙하다. 인스턴스가는 어떻게 '마커'와 아래의 코드에 '정보창'인스턴스 일이야?

var marker = new Marker({ 
       position:props.coords, 
       map:map, 
       //icon:props.iconImage 
       }); 

대신

var marker = new google.maps.Marker({ 
      position:props.coords, 
      map:map, 
      //icon:props.iconImage 
      }); 

var infoWindow = new InfoWindow({ 
        content:props.content 

       }); 

대신 여기

var infoWindow = new google.maps.InfoWindow({ 
        content:props.content 

       }); 

이처럼 작성되지 않은 이유를 내가 이해하지 못하는 것은 전체 코드

function addMarker(props){ 
      var marker = new google.maps.Marker({ 
      position:props.coords, 
      map:map, 
      //icon:props.iconImage 
      }); 

      // Check for customicon 
      if(props.iconImage){ 
       // Set icon image 
       marker.setIcon(props.iconImage); 
      } 

      // Check content 
      if(props.content){ 
       var infoWindow = new google.maps.InfoWindow({ 
        content:props.content 

       }); 

       marker.addListener('click', function(){ 
        infoWindow.open(map, marker); 
       }); 
      } 

     } 

API를 사용하고 있기 때문에 이런 식으로 추측하고 있지만 왜 이런 식으로해야하는지에 대해 더 잘 이해하고 싶습니다.

+1

아마'을 console.log (에서는 google.maps)'시도 크롬 dev에 당신은 마커 및 정보창 나는 그게 내가 찾는 것이 무엇이라고 생각 그것의 방법 –

+0

있습니다 찾을 수 있습니다. 그러나 Marker와 InfoWindow가 Java에서 클래스 이름처럼 대문자로 된 이유는 알지 못했습니다. –

답변

2

당신은 당신의 파일의 내부 import 에드했을 자바 클래스로 마커 및 InfoWindow는을 사용하고 싶습니다. 자, import 같은 것이 없습니다 (사실은 있지만 현재 브라우저 환경에는 존재하지 않습니다).

어쨌든, 자바 스크립트, 모든 객체이다. Javascript 객체를 자바의지도로 생각할 수 있습니다. 기본적으로 키 - 값 구조입니다.

어딘가, 사용중인 Google지도 라이브러리 코드 내에 google이라는 객체가 정의되어 있습니다. 지도라는 키가 포함되어 있으며지도에는 개체가 포함되어 있습니다. 차례로이 객체는 MarkerInfoWindow과 구글 맵 라이브러리에 대한 정의가 포함되어 있습니다.

사실은 다음과 같을 수 있습니다 : 당신이 그 점 표기법이 필요한 이유

var gooogle = { 
    maps: { 
    Marker: /* definition of Marker */, 
    InfoWindow: /* definition of InfoWindow */, 
    // ... 
    }  
} 

있다고. 실제로 가져온 라이브러리에 의해 선언 된 google 객체의 하위 하위 키에 액세스하고 있습니다.

+0

감사합니다. 주제에서 벗어나 방금 JSON에 대해 설명해 드렸습니다. –

+0

그러나 마커 만 대문자로 된 이유는 무엇입니까? –

+0

두 번째 댓글에서 물어 본 내용을 얻지 못했습니다. 마커 만 대문자로 표시되는 것은 아니며, InfoWindow도 마찬가지입니다 (이를 낙타 사례라고합니다). 첫 번째는 JSON이 아닙니다. JSON은 * 자바 스크립트 객체를 직렬화하는 데 사용되는 표준화 된 형식입니다. 즉, 프로그램의 내부 객체를 문자열로 변환하는 것을 의미합니다. 그래서, JSON과 javascript 객체 선언은 같은 것처럼 보이지만 같은 목적으로는 사용되지 않습니다. JSON은 파일로 저장하거나, 예를 들어, HTTP를 통해 보낼하려는 경우 유용합니다 일반 문자열 내부의 실제 자바 스크립트 객체를 작성하는 데 사용되는 형식입니다. – aurelienshz