2017-12-04 24 views
0

私はDelphi 10 SeattleのGoogle Maps APIを利用しています。Googleマップにローカル画像を埋め込むことはできますか?

procedure TfrmMain.FormCreate(Sender: TObject); 
var 
    aStream: TMemoryStream; 
begin 
    WebBrowser1.Navigate('about:blank'); 
    if Assigned(WebBrowser1.Document) then 
    begin 
    aStream := TMemoryStream.Create; 
    try 
     aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr)); 
     aStream.Seek(0, soFromBeginning); 
     (WebBrowser1.Document as IPersistStreamInit) 
     .Load(TStreamAdapter.Create(aStream)); 
    finally 
     freeandnil(aStream); 
    end; 
    HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow; 
    end; 

    fContainer := TExternalContainer.Create(WebBrowser1); 
end; 

これにより、IHtmlDocument2インターフェイスのインスタンスを使用してJavaScriptをMap JSに呼び出すことができます。

procedure TfrmMain.btnStartPointClick(Sender: TObject); 
begin 
    HTMLWindow2.execScript(Format('EmbedImageAtLatLng(%s,%s, %s)',[edtLat.Text,edtLon.Text, edtImageName.txt]), 'JavaScript'); 
end; 

私のクライアントは、特定の場所に特定の画像を投稿して作業者が使用したいと考えています。これは可能ですか?

注:この画像はローカル画像であり、配信されません。それは単に渡されます。

答えて

0

私の知る限り、まっすぐな方法ではありません。しかし、あなたは何ですかすることができますあなたのイメージをアップロードし、労働者が利用できるようにGoogle Drive REST APIを使用しています。

PS:Googleドライブについて言及したので、Googleマップと同じGoogleアカウントを使用しましたが、他のコンテンツマネージャを使用することもできます。

+0

実際に、私はbmpをまっすぐに渡すことができました。ちょうど少しマッサージを受けた。 ありがとう –

+0

これは素晴らしい@MetaMusselです!あなたはあなたのソリューションを共有しますか?少なくともGMapsにイメージを「注入」する部分。私は、[カスタムオーバーレイを追加する](https://developers.google.com/maps/documentation/javascript/examples/overlay-simple)で、ソースイメージとしてbase64でエンコードされたイメージを設定しようとしました。他のオプションも試してみましたが、そのすべてがURIの代わりにbase64のエンコードされたイメージを実装していました。しかし、Base64でエンコードされた画像のサイズが元のサイズに比べて30%(またはそれ以上)に拡大されているのは嫌です。 –

0

私は情報ウィンドウに行ってきました。

marker.info = new google.maps.InfoWindow({  
content: "<div class= ''map-overlay'', style = ''width:110x; height:74px''; float: left><img align=''Left'' src= ''C:/Scripts/QRCode.bmp''></div>" 
    });