2015-04-16 42 views
0

我目前已啓用用戶將地址放入文本框並在Google地圖上顯示地址,但我現在要做的是相反的處理,框(位於獨立區域,同一頁面上)與可拖動標記相對應。我聽說我應該使用PHP或PL/JSON的JSON從地圖到文本框中獲取數據。但是,我對JSON沒有任何瞭解,我認爲Google地圖API在JavaScript內部提供了這種地理編碼方法。我不確定如何完全應用它,並且如果可以在一個頁面中同時使用這兩種方法(或者我應該在JavaScript中使用一些過程並在頁面上調用它,但不確定)。這是到目前爲止我的代碼在頁面的HTML頭:Oracle Apex中的反向地理編碼(來自可拖動標記)

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 

<script type="text/javascript"> 
var uniLatLng = new google.maps.LatLng (51.887496, -2.088788); 
var geocoder = new google.maps.Geocoder(); 
var map; 

function geocodePosition(pos) { 
     geocoder.geocode({ 
       latLng: pos 
     }, 
     function(responses) { 
       if (responses && responses.length > 0) { 
         updateMarkerAddress(responses[0].formatted_address); 
       } 
       else { 
        updateMarkerAddress('Cannot determine address at this location.'); 
       } 
     }); 
} 

function updateMarkerStatus(str) { 
     document.getElementById('P15_ADDRESS').value; 
} 

function initialize() { 
     geocoder = new google.maps.Geocoder(); 
     var mapOptions = { 
       zoom: 16, 
       center: uniLatLng, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
     } 
     map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
}; 

var marker = new google.maps.Marker({ 
      map: map, 
      animation: google.maps.Animation.DROP, 
      flat: false, 
      position: new google.maps.LatLng(59.327383, 18.06747) 
}) 

function map_canvas() { 
     var address = "&P15_ADDRESS."; 
     geocoder.geocode({ 'address': address, 'region': "GB"}, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
         map.setCenter(results[0].geometry.location); 
         var marker = new google.maps.Marker({ 
           map: map, 
           draggable: true, 
           animation: google.maps.Animation.DROP, 
           flat: false, 
           position: results[0].geometry.location 
         }); 
       } 
       else { 
         alert("Geocode was not successful for the following reason: " + status); 
       } 
     }); 
} 
</script> 

頁HTML身體屬性 - 的onload = 「初始化(),map_canvas提供()」

任何建議,我怎麼能做到這一點?

回答

1

我認爲這個例子在反向地理編碼部分做了你想要的。
https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

你需要添加到這個僅僅是一個用於拖動的標記與on dragged監聽器,這將更新的位置,並調用相同的方法,它是在Reverse Geocode按鈕。

+1

是的我同意,但它並不像apex那麼簡單,我大致可以使用html和JavaScript來完成,但是將頂點區域中的值從Google map傳遞到特定文本字段(P20_ADDRESS,P20_POST_CODE等)需要更多。目前,我正在執行將通過(PL/SQL和JavaScript位)調用的過程(SQL + JavaScript)來顯示標記並將值傳遞給變量,並將變量轉換爲特定的文本字段(PL/SQL)。這是我的計劃將會看到它將如何工作;) – UZIERSKI