簡體   English   中英

如何將Google Map添加到正在使用的組件中?

[英]How can i add google map to a component that is using sightly?

我有一個叫做foo的組件

我有foo.htmlapps/foo/components/content/foo/foo.html

當前此文件包含以下內容。

<div  data-sly-use.ev="Foo"
        class="${ev.cssClass || ''}"
        title="${ev.title || ''}"
        data-emptytext="Foo Asset">
        ${ev.html @ context='unsafe'}</div>

我有Foo.javaapps/foo/components/content/foo/Foo.java具有getCssClass(), getTitle(), getHtml()由foo.html需要。

以上工作正常

當用戶將此組件添加到頁面時,我希望它在頁面中包含google map。 谷歌地圖的經度/緯度將由Foo.java#getLat()Foo.java#getLong()

我怎樣才能做到這一點?

我讓Google地圖在AEM之外的HTML中工作,並且代碼非常簡單:

<!DOCTYPE html>
<html>
  <head>
    <style>
      #map-canvas {
        width: 500px;
        height: 400px;
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js"></script>
    <script>
      function initialize() {
        var mapCanvas = document.getElementById('map-canvas');
        var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
        var mapOptions = {
          center: myLatlng,
          zoom: 8,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(mapCanvas, mapOptions)
        var marker = new google.maps.Marker({
          position: myLatlng,
          map: map,
          title: 'Hello World!'
        });
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

上述javascript中的myLatlng變量的經度/緯度值必須來自Foo.java

如果要將參數傳遞給腳本,則可以像通常在Coral UI中一樣通過Sightly腳本中的data-xxx屬性進行操作。

  • 將Foo中的屬性設置為某些DIV中的data屬性,您稍后將在JS中獲取它。
  • 通過其ID獲取JS中的div並獲取您感興趣的數據屬性。

例:

<div id="map_canvas" data-lat="${ev.lat}" data-long="${ev.long}">
</div>

使用Javascript

this.mapCanvas = document.getElementsByClassName("map_canvas")[0];
var lat = $mapCanvas.data("lat");
var long = $mapCanvas.data("long");
var myLatlng = new google.maps.LatLng(lat,long);

我希望這有幫助! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM